0

copy有没有办法从 a到 cout做复杂的事情map<A,B>,使用 C++ 的复制功能?

看起来很复杂,因为 map 有不止一项,而且迭代器本身并不指向读取数据。

我的意思是我们对向量所做的事情:

copy (vector.begin(), vector.end(), ostream<int>(cout," "));

4

1 回答 1

2

地图的 value_type 是std::pair<key_type, assoc_type>. 要进行复制,您需要提供一个operator<<采用该类型的。例如,对于 a map<string, int>,它将是:

std::ostream *operator<<(std::ostream &os, std::pair<std::string, int> const &v) {
    return std::cout << v.first << ":\t" << v.second;
}

你通常必须把它放在里面namespace std让编译器找到它。

于 2012-08-08T00:04:34.390 回答