c++传递STL容器项作为引用
C++ pass STL container items as reference
我有一个类型为std::map<std::string, std::vector<MyClass>>
的映射。地图是这样填充的,我创建了一个矢量,并将它与一个guid作为一对放入地图中。然后我想调用一个函数,把刚刚插入的向量赋给它,让它填充这个向量。它看起来像这样:
{
std::string guid = "aGUID"
std::vector<MyClass> vec_myClass(0);
my_map[guid] = vec_myClass;
std::vector<MyClass>& vec_ref = my_map[guid];
FillVector(vec_ref);
}
FillVector(std::vector<MyClass>& vec) { vec.push_back(...); }
我认为[]操作符返回my_map
中项目的引用,我可以给函数使用它,但我的应用程序此时崩溃。我首先将向量放入映射中(当它为空时),因为我想避免复制,因为FillVector函数将大量项目放入向量中。我错在哪里?通过引用传递一个函数可能是错误的吗?或者是否有更好的解决方案?这里我更喜欢引用而不是指针。谢谢,祝你一切顺利。
所有这些代码简化为:
{
std::string guid = "aGUID"
FillVector(my_map[guid]);
}
顺便说一句。我想你的问题似乎不在这里,但在代码中你没有告诉我们…
std::map操作符将在内部为不存在的键创建值。请看这个链接。传递引用到函数是可以的,问题似乎是在你的代码的其他地方。
相关文章:
- 将对象数组的引用传递给函数
- Ctypes wstring通过引用传递
- 为什么引用传递会导致此崩溃(C++)
- 通过常量引用传递参数的矩阵模板类
- 通过引用传递-为什么要调用这个析构函数
- 何时应通过引用传递矢量参数而不是按值传递矢量参数?
- 如何传递带有通过引用传递的结构参数的函数?
- 将 AActor 引用传递到嵌套对象中
- 在 c++ 中将变量作为结构构造函数中的引用传递
- 将输入参数作为右值引用传递?
- 当我尝试通过 arduino 上的引用传递布尔数组时出现问题
- 如果我们通过引用传递变量,则递归中使用的堆栈空间量是否为零?
- 不同于按值传递和常量引用传递的程序集
- 通过引用传递参数时C++类型转换
- C++:在不中断共享的情况下通过引用传递共享 PTR?
- 为什么我的运算符 + 重载尽管是通过引用传递的,但仍调用我的复制构造函数?
- 通过引用传递类不会更改原始类
- 按值传递变量与按引用传递变量具有相同的结果
- 将常量引用传递给线程
- 通过引用传递临时对象