【发布时间】:2013-05-21 02:24:51
【问题描述】:
我有以下向量:
std::vector<std::pair<int,std::string>> songs;
我想使用 std::copy 将元素从向量(假设是 int)传递给 ostream,类似于以下内容,这当然不起作用:
std::copy(songs.begin(),songs.end(),std::ostream_iterator<int>(std::cout,""));
我知道我可以这样做:
for(auto it=songs.begin(); it!=songs.end(); ++it)
{
std::cout << (*it).first;
}
但我想知道是否可以在 C++ 中创建一个仅指向该对元素之一的迭代器,然后使用它来迭代并将元素复制到 ostream 或者我如何制作上面的 std::copy工作吗?
【问题讨论】:
-
您可以使用
std::transform返回每对的第一个元素。 -
How to retrieve all keys (or values) from a std::map? 的可能副本,它有指向
select1st、boost range 的过滤器适配器和boost::transform_iterator的指针,所有这些都可以用来解决这个问题