Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 采用back_插入器,使用boost迭代器采用器从映射插入到列表_C++_Stl_Iterator_Transform - Fatal编程技术网

C++ 采用back_插入器,使用boost迭代器采用器从映射插入到列表

C++ 采用back_插入器,使用boost迭代器采用器从映射插入到列表,c++,stl,iterator,transform,C++,Stl,Iterator,Transform,std::copy(map.begin()、map.end()、std::back\u inserter(list))这就是我试图实现的目标。。将i->second项目从地图移到列表。有我可以使用的boost迭代器采用程序吗 我认为transform_迭代器可以工作。这就是我想做的 std::map<int, std::string> map; std::list<std::string> list; std::copy( boost::make_tra

std::copy(map.begin()、map.end()、std::back\u inserter(list))
这就是我试图实现的目标。。将
i->second
项目从地图移到列表。有我可以使用的boost迭代器采用程序吗

我认为transform_迭代器可以工作。这就是我想做的

std::map<int, std::string> map;
std::list<std::string>     list;

std::copy(
    boost::make_transform_iterator(map.begin(), 
        boost::bind(&std::pair<int, std::string>::second, _1)), 
    boost::make_transform_iterator(map.end(), 
        boost::bind(&std::pair<int, std::string>::second, _1)),
    std::back_inserter(list));

注意:我无法使用C++11

问题在于
值类型
std::map::value_type
不是
std::pair
它是
std::map
所以一旦我将代码更改为

std::copy(
    boost::make_transform_iterator(map.begin(), 
        boost::bind(&std::pair<const int, std::string>::second, _1)), 
    boost::make_transform_iterator(map.end(), 
        boost::bind(&std::pair<const int, std::string>::second, _1)),
    std::back_inserter(list));
std::复制(
boost::make_transform_迭代器(map.begin(),
boost::bind(&std::pair::second,_1)),
boost::make_transform_迭代器(map.end(),
boost::bind(&std::pair::second,_1)),
标准:背向插入器(列表);
它起作用了

std::copy(
    boost::make_transform_iterator(map.begin(), 
        boost::bind(&std::pair<const int, std::string>::second, _1)), 
    boost::make_transform_iterator(map.end(), 
        boost::bind(&std::pair<const int, std::string>::second, _1)),
    std::back_inserter(list));