您的位置:首页 > 其它

std::map的简单使用例子

2008-08-25 19:08 357 查看
std::map<double, int> map_test;
{
double a1 = 0.12;
double a2 = 0.12;
double a3 = 0.19;
std::map<double, int>::iterator it;
if ( (it = map_test.find(a1)) != map_test.end() )
{
(*it).second ++;
}
else map_test.insert( make_pair(a1, 0) );

if ( (it = map_test.find(a2)) != map_test.end() )
{
(*it).second ++;
}
else map_test.insert( make_pair(a2, 0) );

if ( (it = map_test.find(a3)) != map_test.end() )
{
(*it).second ++;
}
else map_test.insert( make_pair(a3, 0) );
}
cout << map_test.size() << endl;
for ( map<double,int>::iterator it = map_test.begin(); it != map_test.end();
++ it )
{
cout << it->first << " " << it->second << endl;

}

map<double, int> map_test2;
map_test2.insert( make_pair(13.1, 13));
map_test2.insert( make_pair(14.1, 23));
map_test2.insert( make_pair(15.1, 33));
map_test2.insert( make_pair(16.1, 43));
map_test2.insert( make_pair(17.1, 53));

// 取最后一个元素
reverse_iterator<std::map<double, int>::iterator> it_reverse = map_test2.rbegin();
cout << it_reverse->first << " " << it_reverse->second << endl ;

/////////////////////////////////////////////////////

struct DataPoint
{
DataPoint(double in_x, double in_y ) : x(in_x), y(in_y) {}

double x;
double y;
};
map<double, vector<DataPoint> > test_map;
vector<DataPoint> dataPoints;
dataPoints.push_back(DataPoint(10, 23));
dataPoints.push_back(DataPoint(11, 22));
dataPoints.push_back(DataPoint(14, 21));
test_map.insert( make_pair(.89, dataPoints));
map<double, vector<DataPoint> >::iterator it_look = test_map.find(0.89);
if ( it_look != test_map.end() )
{
it_look->second.push_back( DataPoint(89, 98));
}

map<double, vector<DataPoint> >::iterator it = test_map.begin();
for ( ; it != test_map.end(); ++ it )
{
vector<DataPoint> & dataPoints = it->second;
for ( int nPos= 0; nPos < dataPoints.size(); nPos ++ )
{
cout << dataPoints[nPos].x << " " << dataPoints[nPos].y << endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: