mdsk.net
当前位置:首页 >> C++ STL中ErAsE函数的用法 求助~~ >>

C++ STL中ErAsE函数的用法 求助~~

对于vector一般不要用erase(),因为很多情况下他要和<algorithm>中的remove()一块用!erase()的使用会使迭代器失效如果删除的不是最后面的元素的话.你的程序中if(*iter%2==0) ivec.erase(iter); 可以换成:(记着加头文件<

在循环中要谨慎使用erase这个会影响容器本身有可能会导致出错.如果不得不erase那么最好使用反向循环从end ->begin

erase函数的原型如下:(1)string& erase ( size_t pos = 0, size_t n = npos ); (2)iterator erase ( iterator position ); (3)iterator erase ( iterator first, iterator last ); 也就是说有三种用法:(1)erase(pos,n); 删除从pos开始的n个字符,比如erase

你看我的注释#include <iostream>#include <vector>#include <iterator>using namespace std;void mainErea(){ vector<int> vec; vec.push_back(1); vec.push_back(2); vec.push_back(3); vec.push_back(4); //测试 for(auto pr=vec.begin();pr!=vec.end()

你不会是在循环里用erase吧.这样的原先的迭代器就失效了.你说的delete是什么?同时erase是返回下一个迭代器.因为要用map stlfor(it = stl.begin(); it != stl.end()){if(),, it = stl.erase(it );else it ++// 或者用 st.erase(it++)}

C++ STL中的remove和erase函数曾经让我迷惑,同样都是删除,两者有什么区别呢?vector中的remove的作用是将等于value的元素放到vector的尾部,但并不减少vector的sizevector中erase的作用是删除掉某个位置position或一段区域(begin,

string a="asfsadfsadfsd";a.erase(3,5); 删除从位置3开始的5个字符注意,c++中位置是从0开始的.这里的3即是第四位,也即是sasfsadfsadfsd01234567890..a变成asfadfsd

vector中的remove的作用是将等于value的元素放到vector的尾部,但并不减少vector的sizevector中erase的作用是删除掉某个位置position或一段区域(begin, end)中的元素,减少其sizelist容器中的remove 成员函数,原型是void remove (const

得看你用的是什么的.erase了如果你vector <int> a;a.erase(.);头定义是#include <vector>如果是 list等等 头定义都不一样

map的erase()有三个重载函数,你说的是哪个? 如果是根据key值来删除,成功返回1,失败返回0.如果根据迭代器删除单个,迭代器要后++,因为删除了的迭代器会失效,所以要指向下一个.如果是根据迭代器删除一片的话,要重新指定迭代器.

网站首页 | 网站地图
All rights reserved Powered by www.mdsk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com