【发布时间】:2013-04-02 18:30:10
【问题描述】:
我有一张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 将大量项目放入向量中。我的错误在哪里?通过引用函数来传递引用可能是错误的吗?或者有明显更好的解决方案吗?我更喜欢这里的引用而不是指针。谢谢,一切顺利。
【问题讨论】:
-
一个人们可以尝试自己编译和运行的小测试用例是理想的,因为问题可能出在我们看不到的代码部分。
-
周围的代码非常庞大,很难提取一个测试用例。是否有在线提供 C++ 测试用例的可能性(如 jsFiddle)?
-
你是说 likie ideone.com 和 liveworkspace.org?