读书人

STL 编译有关问题

发布时间: 2012-02-05 12:07:15 作者: rapoo

STL 编译问题
我在vstudio 2003里面编译成功的一个程序,到linux下面就报错了。下面是我的小程序,其中有一行是这个map_itr = second.erase(tmp_map_itr); 在linux下编译时(gcc/g++ 3.3.1),报错说没有定义map的operator=操作,请问一下为什么?

《c++ primer plus》这本书上作者说程序在vstudio 2003和linux gcc/g++ 3.3.1上都测试过,为什么我的不行呢?

急啊,谢谢大家先!

帮我看一下代码:
#include <iostream>
#include <iterator>
#include <list>
#include <map>

using namespace std;

struct data{
int i;
double j;
data(int a, double b):i(a), j(b){}
};


int _tmain(int argc, _TCHAR* argv[])
{
typedef map <int, struct data> maptype;

ostream_iterator <int, char> out(cout, " ");

maptype first;
int i;

typedef pair <int, struct data> data_pair;
for (i = 0; i < 5; i++) {
first.insert(data_pair(i,data(i,i+1)));
}

maptype second(first);
maptype::iterator map_itr;

for (map_itr = second.begin(); map_itr != second.end(); map_itr++) {
if (map_itr-> first == 3 || map_itr-> first == 2) {

maptype::iterator tmp_map_itr;
tmp_map_itr = map_itr;
map_itr = second.erase(tmp_map_itr);
map_itr--;

}
}

return 0;


[解决办法]

[解决办法]
都是很好的建议! 值得学习

读书人网 >UNIXLINUX

热点推荐