c++传递STL容器项作为引用

C++ pass STL container items as reference

本文关键字:引用 传递 STL c++      更新时间:2023-10-16

我有一个类型为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操作符将在内部为不存在的键创建值。请看这个链接。传递引用到函数是可以的,问题似乎是在你的代码的其他地方。