如何在c ++中的2d map中使用std :: insert?

时间:2017-03-24 17:31:24

标签: c++

我在std::insert()处理2D地图时遇到了一些问题。当我像往常一样使用地图时它工作正常,但是当在另一张地图中使用地图并且想知道是否有人可以提供帮助时,我似乎无法正确地获得语法。 我希望第二张地图暂时保持不变:

string prevValue;
std::map <string, map <string, int > > mCounts;
mCounts.insert (std::pair  <string, map <string, int>>(prevValue, map <string, int>);

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您错过了&#34;临时值&#34;一组括号:

mCounts.insert (
    std::pair  <string, map <string, int>>(prevValue, map <string, int>());
//                                                                     ^^

以下是一些替代方案:

mCounts.insert(std::make_pair("foo", std::map<std::string, int>()));
mCounts.emplace(std::piecewise_construct,
                std::forward_as_tuple("bar"), std::forward_as_tuple());
mCounts["quz"];

在C ++ 17中:

mCounts.try_emplace("zip");