我有一个 std::map<std::string, std::vector<MyClass>>
类型的 map . map 以这种方式填充,我创建了一个 vector 并将其与 guid 作为一对放入 map 中。然后我想调用一个函数,把刚刚插入的 vector 给它,让它填充 vector 。看起来像这样:
{
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
中项目的引用,我可以将其赋予一个函数来使用它,但此时我的应用程序崩溃了。我首先将 vector 放入 map (当它为空时),因为我想避免复制工作,因为函数 FillVector 将大量项目放入 vector 中。我的错误在哪里?通过引用传递函数的引用可能是错误的吗?或者对此有明显更好的解决方案吗?在这里我更喜欢引用而不是指针。谢谢,祝一切顺利。
最佳答案
所有代码都简化为:
{
std::string guid = "aGUID"
FillVector(my_map[guid]);
}
顺便说一句。我认为您的问题似乎不在这里,但在代码中您没有向我们展示...
关于C++ 传递 STL 容器项作为引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15761595/