C++ map erase问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ map erase问题相关的知识,希望对你有一定的参考价值。
C++map中用 erase删除完元素,是不是不用好像list那样把删除的iterator重新指向begin或者把返回的值返回给iterator本身呢?
因为我用过cc跟其他编译器编过都没出错
我的代码是这样的
int main()
map<char,int> mymap;
mymap.insert(pair<char,int>('A',10));
mymap.insert(pair<char,int>('B',20));
mymap.insert(pair<char,int>('C',30));
map<char,int>::iterator removeIter = mymap.begin();
while(removeIter!=mymap.end())
if(removeIter->first== 'A' || removeIter->first == 'C')
mymap.erase(removeIter); //use erase to remove the data from map
removeIter = mymap.begin();
removeIter++;
测试代码:
#include <string>
#include <map>
#include <stdio.h>
using namespace std;
int main(int argc, char **argv)
map<int,int> mymap;
mymap[1] = 1;
mymap[2] = 2;
mymap[3] = 3;
mymap[4] = 4;
mymap[5] = 3;
mymap[6] = 6;
mymap[7] = 7;
mymap[8] = 3;
mymap[9] = 9;
map<int,int>::iterator it;
printf("----%d\n\n", mymap.size());
for ( it = mymap.begin(), it != mymap.end() )
printf("1****%d--%d\n", it->first, it->second);
if ( 3 == it ->second )
mymap.erase( it->fitst);
printf("1****%d----%d\n", it->first, it->second);
++it;
printf("----%d\n\n", mymap.size());
return 0;
参考技术A int main()
map<char,int> mymap;
mymap.insert(pair<char,int>('A',10));
mymap.insert(pair<char,int>('B',20));
mymap.insert(pair<char,int>('C',30));
map<char,int>::iterator removeIter = mymap.begin();
while(removeIter!=mymap.end())
if(removeIter->first== 'A' || removeIter->first == 'C')
mymap.erase(removeIter++);
C++ map和vector的erase函数说明
一、std::map erase 函数声明
这里首先要注意,C++98 和c++11 针对map的erase函数有不同的函数原型,这往往是出现问题的关键所在。
参考如下链接:
http://www.cplusplus.com/reference/map/map/erase/
C++98
void erase (iterator position);
size_type erase (const key_type& k);
void erase (iterator first, iterator last
以上是关于C++ map erase问题的主要内容,如果未能解决你的问题,请参考以下文章
c++ STL map 中erase()后++会指向那个元素?以及erase后map将会自动做啥操作(也就是会怎么变动)?