【发布时间】:2010-10-12 15:44:12
【问题描述】:
我有下一个代码:
#include <iostream>
#include <algorithm>
#include <map>
#include <iterator>
//namespace std
//{
std::ostream& operator << ( std::ostream& out,
const std::pair< size_t, size_t >& rhs )
{
out << rhs.first << ", " << rhs.second;
return out;
}
//}
int main()
{
std::map < size_t, size_t > some_map;
// fill some_map with random values
for ( size_t i = 0; i < 10; ++i )
{
some_map[ rand() % 10 ] = rand() % 100;
}
// now I want to output this map
std::copy(
some_map.begin(),
some_map.end(),
std::ostream_iterator<
std::pair< size_t, size_t > >( std::cout, "\n" ) );
return 0;
}
在这段代码中,我只想将地图复制到输出流。为此,我需要定义运算符 因为 std::cout、std::pair 和 std::copy 调用了我的操作符
快速解决方案 - 将我的 oerator
您知道这个问题的哪些解决方案或解决方法?
【问题讨论】:
-
顺便说一句,有一个STL算法可以完成第一个for循环,sgi.com/tech/stl/generate.html,那么如果你真的觉得随机值需要分配随机位置,sgi.com/tech/stl/random_shuffle.html。
标签: c++ stl namespaces operator-overloading