- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如果我有一个引用 map 的函数:
pair<int,int> myFunc(map<int,char> &myVar){...}
我可以在不需要“&”的情况下将 map 传递给它。
myFunc(someMapitoa);
有区别吗?复制了一份然后就扔掉了吗?无论如何我都应该使用“&”吗?
最佳答案
C++ 默认是按值传递。
所以,这会生成一个拷贝:
void foo (bar b);
这不是:
void foo (bar & b);
这会复制一个指针,但不会复制它指向的实际数据:
void foo (bar * b);
如果您真的想深入了解它,请参阅 this SO post关于移动语义。
不管怎样,上面三个例子的调用方式都是一样的:
#include <iostream>
using namespace std;
int alpha (int arg) {
// we can do anything with arg and it won't impact my caller
// because arg is just a copy of what my caller passed me
arg = arg + 1;
return arg;
}
int bravo (int & arg) {
// if I do anything to arg it'll change the value that my caller passed in
arg = arg + 1;
return arg;
}
int charlie (int * arg) {
// when we deal with it like this it's pretty much the same thing
// as a reference even though it's not exactly the same thing
*arg = *arg + 1;
return *arg;
}
int main () {
int a = 0;
// 1
cout << alpha (a) << endl;
// 1
cout << bravo (a) << endl;
// 2
cout << charlie (&a) << endl;
return 0;
}
关于c++ - 在 C++ 中传递 'implied' (?) 引用时是否生成拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33376671/
在 mysql bool 匹配中,如果不存在运算符,则隐含 OR。如果您想要 AND,则需要为每个关键字添加 +。 因此查询“word1 word2”等于“word1 OR word2”,“+word
我正在使用 imply 来处理德鲁伊的集群。但是我的日志文件已增加到数百 GB 的存储空间。我说的是存在于 imply/var/sv/目录中的日志文件,其中有这 7 个日志文件,broker.log、
我是 Mathematica(v8) 的新手,正在使用它来编程命题逻辑。 我想知道 If 之间有什么区别和 Implies运营商。例如, 两者 If[p,q]和 Implies[p,q]返回 q为 p
我正在研究两个遗留的交叉编译的 ARM Linux 构建。除了“使用此 VM 镜像构建源代码”之外,没有太多文档。文件命令输出之间的唯一区别是存在“(SYSV)” # file Executable
我有一个包含时空数据的大型数据集。每组坐标都与一个 id(电脑游戏中的玩家 id)相关联。不幸的是,每个 id 的坐标并不是在每个时间单位都记录。如果在 x 时间戳的特定 id 读数不可用,则该行从数
真值表: P------------Q------------XOR------------IMPLIES---- -------当机立断 T------------T------------F---
当你想定义一个新的权限类型时,你必须实现抽象类java.security.Permission。所以你需要定义隐含函数。这些函数什么时候被调用? 最佳答案 所以,显而易见的答案是您打开您最喜欢的 ID
我试图让我的代码 JavaScript 变得“严格”,所以我通过 JSLint 运行它以确保我的代码合规。 但是,在下面的代码中: setTimeout("getExtJs()", 2000); 我收
JavaScript: The Good Parts 将这些类型的声明定义为错误的: foo = value; 这本书说“JavaScript 使被遗忘的变量成为全局变量的策略创造了很难发现的错误。”
最近的问题出现在通常的蕴涵运算符( |-> )和 implies 之间的区别是什么SystemVerilog 中的运算符。不幸的是,我还没有找到明确的答案。但是,我收集了以下信息: 来自 System
我正在尝试使用 ggplot2 构建一个自定义 stat 函数,其中我想访问一个离散变量来计算每组的统计数据。但是,ggplot 层的默认行为是自动将隐式组分配给任何离散变量(主要是)。这意味着我的数
最近更新了 GCC 4.8 的文档,现在引入了一个新的优化开关 -Og。这个 [..] addresses the need for fast compilation and a superior d
假设我有我的对象,foo: var foo = { name: "fooName", consoleLog: function() {console.log("foo!")} } ..
我的练习的陈述是这样的:feature_3 的分布暗示了数据是如何生成的。我尝试了解我应该从中推断出我的 ETL 或 ML 模型的其余部分。 我已经绘制了该特征的 Q-Q 图。分布看起来相当正常。对于
我正在对 std::optional 进行子类化,需要删除 operator==(bool) 并实现我的自定义 operator==(enum)。 要删除运算符,这行得通: constexpr boo
我想创建一个函数,可以将 implies() 函数的左右参数存储在 2 个不同的表达式变量中。带有代码的解决方案非常值得赞赏。谢谢。 这是我以前尝试过的。 #include #include #inc
如果我有一个引用 map 的函数: pair myFunc(map &myVar){...} 我可以在不需要“&”的情况下将 map 传递给它。 myFunc(someMapitoa); 有区别吗?复
This SO question引发了关于 std::generate 和标准做出的保证的讨论。特别是,你能否使用具有内部状态的函数对象并依赖于 generate(it1, it2, gen) 来调用
我在 Zend Framework 项目的默认 index.php 文件中遇到了这个有趣的行: defined('APPLICATION_PATH') || define('APPLICATI
This SO question引发了关于 std::generate 的讨论以及标准做出的保证。特别是,您能否使用具有内部状态的函数对象并依赖 generate(it1, it2, gen)调用ge
我是一名优秀的程序员,十分优秀!