0

我有一张类型的地图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(...); }

我认为 [] 运算符返回对 in 项目的引用my_map,我可以将其提供给使用它的函数,但此时我的应用程序崩溃了。我将向量首先放入地图中(当它为空时),因为我想避免复制工作,因为函数 FillVector 将大量项目放入向量中。我的错误在哪里?通过引用函数来传递引用可能是错误的吗?或者有明显更好的解决方案吗?我更喜欢这里的引用而不是指针。谢谢,一切顺利。

4

2 回答 2

2

所有这些代码都简化为:

{
    std::string guid = "aGUID"
    FillVector(my_map[guid]);    
}

顺便提一句。我认为您的问题似乎不在这里,但是在代码中您没有向我们展示...

于 2013-04-02T10:21:39.683 回答
0

如果键不存在,std::map 运算符将在内部为键创建值。看到这个链接。传递对函数的引用是可以的,问题似乎出在代码中的其他地方。

于 2013-04-02T10:30:10.753 回答