我有以下向量:
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在上面工作?
1 回答
正如克里斯mentioned在评论中,最简单的解决方案是使用
std::transform
如果要转到自定义迭代器路径,请创建一个模仿
ostream_iterator
行为的类型,另外使用std::get
仅检索您关注的项目 .用它作为