任何人都可以解释一下我是否需要 & 在第一个代码片段中
can anyone please explain me the need for & in the first code snippet
在下面的代码片段中,我注意到即使我们没有操作字符串,也使用了 & 符号。谁能告诉我为什么需要它?
bool compare(string &s1,string &s2)
{
return s1.size() < s2.size();
}
片段 2:这段代码会起作用吗?
bool compare(string s1,string s2)
{
return s1.size() < s2.size();
}
需要&
符号(引用(,因为这样程序将只使用对原始字符串的引用。如果不使用引用,则程序将复制字符串,因此程序将
- 慢一点
- 内存效率较低
常量引用(const string&
(更好,因为它会使其成为只读的,因此您可以传递字符串文字。喜欢compare("abc", "foo bar")
.
是的,您的第二个代码段可以工作,但不建议这样做。
相关文章:
- 获取向量C++中第一个值和最后一个值的和
- 有没有一种"cleaner"的方法可以在指向基的指针向量中找到派生类的第一个实例?
- 当我在第一个循环中使用"auto"时,它工作正常,但是使用"int"它会给出错误,为什么?
- 我有两个类需要在同一 cpp 文件中相互引用,但第一个类无法识别第二个类类型的对象
- 为什么有时我输入一个整数,程序将第一个输入的数字打印成十进制数?
- 如何在创建自定义迭代器时获得 std::p air 的第一个和第二个?
- 如何实现 Front() 方法以返回模板化双向链表C++的第一个元素?
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- "main"函数堆栈中的对象在第一个任务运行时被覆盖 (FreeRTOS)
- 对的排序向量 (std::vector<pair<int, int>>) 按对的第一个元素搜索并更新第二个元素值
- C++部分概念 id:显式模板规范顺序/第一个参数的特殊状态的原因是什么?
- 比较 2 个向量并从第二个向量中删除在第一个 - c++ 中找不到的元素
- 为什么当我尝试搜索双链表中第一个数据条目之外的数据时,程序崩溃了?
- 使第二个类的构造函数成为第一个类中的友元函数
- 为什么第二个代码给出了预期的结果,而第一个代码却没有?
- 使用哈希图打印第一个重复元素;
- 任何人都可以解释一下我是否需要 & 在第一个代码片段中
- 基本 GLSL:两个片段着色器彼此相邻,但第一个(绘制纹理)被覆盖
- 什么可能导致第一个代码片段的输出不同于第二个和第三个