为什么向量分配会改变分配的向量
Why vector assignment changes the assigned vector
案例 1
void insert(map<string, vector<int>> &y,const string &x)
{
vector<int> v=y[x];
if(!y.count(x)>0)
{
...
}
}
案例2
void insert(map<string, vector<int>> &y,const string &x)
{
//vector<int> v=y[x];
if(!y.count(x)>0)
{
...
}
}
在第一种情况下,if 语句为真。在第二种情况下,if 为假。在这两种情况下,y[x] 的大小起初都是零。但在将 y[x] 分配给 v 后的第一种情况下,y[x] 的大小变为 1。
这是怎么发生的?还有我们如何才能将 y[x] 分配给 v,而不会影响 y[x]?
因为如果传递给它的键尚不存在,map::operator[]
会创建一个具有默认构造值的键值对。
如果您不希望这样做,请使用 map::at
(如果键不存在,它将引发异常,因此您必须处理它)或map::find
(将迭代器返回到具有该键的元素,或者如果没有这样的元素,则map::end
)。
相关文章:
- 用字符串的向量分配字符串向量
- 如何将向量分配给参考变量?
- 如何将C++向量分配给非表全局变量
- 向量分配上的 C++ 分割错误
- 如何将int分解为数字并以相同的顺序为向量分配数字
- 将向量分配给一个元素
- 将向量分配给向量向量的向量时,向量是范围的
- 带有Valgrind的C 的向量分配中的内存泄漏
- 将向量分配给另一个
- 为向量分配内存
- 为结构的整个向量分配结构的元素
- 将向量分配给结构的向量字段
- C++对象的向量:分配对象
- C++:通过从映射向量分配映射实例来填充映射的映射
- 将儿童的向量分配给祖父母的向量
- 使用 std::向量分配的类比 LOT 的指针分配慢
- C++ 向量分配问题
- 为什么向量分配会改变分配的向量
- 在C++中初始化向量时,你能给向量分配一个大的内存块吗
- 向量分配中的问题