C++ 向量运算符 [] 参考
c++ vector operator[] reference
vector<int> vec;
vec.reserve(10);
map<int, vector<int> >hash;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
vec.push_back(4);
hash[-1] = vec;
vector<int> ref = hash[-1];
ref.push_back(5);
cout <<hash[-1].back() <<endl; // prints 4
hash[-1].push_back(6);
cout <<hash[-1].back() <<endl; // prints 6
我不确定,为什么在上面的代码中,hash[-1].back() 不打印 5(输出为 4)。[] 向量的运算符返回一个引用,由于我在引用中添加了 5,它不应该影响哈希 [-1] 吗?还是正在制作副本,最后一个推送语句如何工作?
它返回一个引用,然后你用它复制它
vector<int> ref = hash[-1];
你的意思是
vector<int>& ref = hash[-1];
与:
vector<int> ref = hash[-1];
您正在创建一个名为 ref
的新vector<int>
,该使用复制构造函数初始化以hash[-1]
。
你真正想要的是使用引用:
vector<int>& ref = hash[-1];
相关文章:
- 为什么比较运算符如此快速
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 使用C++中的模板和运算符重载执行矩阵运算
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 增量运算符与后缀混淆
- 一个关于在C++中重载布尔运算符的问题
- 为什么在运算符重载时需要参考?
- 赋值运算符的返回值可以作为参考吗?
- 为什么合成的复制分配运算符被定义为如果类有参考成员,则将其定义为删除
- 通过参考将派生的类传递给运算符会产生错误
- C 超载相等运算符.我应该写自己的功能以接受通过参考或值传递的参数
- 分配运算符过载:返回void与返回参考参数
- C 运算符在参考vars上,这是做什么的
- C 复制分配运算符,用于参考对象变量
- 如果铸造运算符对类型和引用类型的引用,为什么直接列表初始化会导致类型参考铸件的模棱两可
- 为什么我们在分配运算符过载中使用参考返回,而不是在加上Minus OPS中使用
- 数组[]运算符返回参考,因此如何更改其值
- C++ 向量运算符 [] 参考
- C++中的临时、参考和三元运算符
- C++运算符逗号/转发参考代码无法编译