如何在Map中存储set container的迭代器列表

时间:2015-01-30 14:13:52

标签: c++ dictionary stl iterator set

我想在地图容器中插入键和值。我的密钥只有string,但值为list< set<string>::iterator >

这是我的头文件代码。

using Mypaths = set < string > ;
using Mapdata = map < string, list < set < string >::iterator > >;

Mapdata myMap;
Mypaths paths;

在这里,我想从一个函数中插入值,在mymap键中将是正常的string,但值应该是list of iterator of set container指向Mypaths集的不同位置的值。

请告诉我如何才能这样做。我在线搜索我没有得到任何与此相关的答案。

任何帮助都将不胜感激。

此致

1 个答案:

答案 0 :(得分:1)

以下是我希望有所帮助的例子:

#include <string>
#include <set>
#include <map>
#include <list>

int main()
{
    using namespace std;

    using Mypaths = set < string > ;
    using Mapdata = map < string, list < set < string >::iterator > >;

    Mapdata myMap;
    Mypaths paths { "left", "right", "up", "down" };

    // Fill a temporary list with iterators...

    list< set<string>::iterator > temp;

    temp.push_back( paths.find("left") );
    temp.push_back( paths.find("up") );

    // ... and then add the list to the map

    myMap["left and up"] = std::move(temp);

    // Or do it directly within the map:

    myMap["right and down"].push_back( paths.find("right") );
    myMap["right and down"].push_back( paths.find("down") );
}