c++ 里面的erase()和insert()的问题。

为什么结合容器里的set定义的对象可以在调用erase(x)和insert(x)这两个函数时,括号里的参数可以为具体的值,但是序列容器的vector,deque,list定义的对象调用erase(i)和insert(i)括号里的参数只能是迭代器的变量,如果是具体的值就会报错,这是为为什么啊?

set 容器可以根据想被插入的值来求得它应该放的位置, 因为它是个二叉树。但是list vector 里面的元素是无序的, 所以容器不知道被插数值的插入位置,故必须用迭代器确定插入位置。

reference: http://www.cplusplus.com/reference/stl/追问

什么叫二叉树?

追答

http://zh.wikipedia.org/wiki/二元搜寻树

温馨提示:内容为网友见解,仅供参考
无其他回答

c++ 里面的erase()和insert()的问题。
set 容器可以根据想被插入的值来求得它应该放的位置, 因为它是个二叉树。但是list vector 里面的元素是无序的, 所以容器不知道被插数值的插入位置,故必须用迭代器确定插入位置。reference: http:\/\/www.cplusplus.com\/reference\/stl\/

...编辑再输出到文本?编辑要用到erase() insert()函数
代码如下(insert \/ erase,使用这两个函数的地方都做了标记):include <iostream> include <fstream> include <string> include <vector> using namespace std;\/\/ 常量定义 const string IN_FILE = "d:\\\\in.txt";const string OUT_FILE = "d:\\\\out.txt";typedef vector<string> StrVector;\/...

C++学习 STL中的string常用方法以及分割数字和字母的方法
在使用C++学习STL中的string类时,需注意以下方法:迭代器在`erase`操作后会指向序列的下一个元素,而在`insert`操作后,则需要迭代器前进两次才能指向处理的下一个元素位置。Vector的内存管理策略为在空间不足时才重新分配,而`Shrink_to_fit()`方法能将容量调整到等于大小,释放多余内存空间。`Capacity...

C++ erase()函数用法
C++编程语言中,`erase()`函数是容器类如`std::vector`,`std::list`,`std::set`等的重要成员函数,用于删除容器中的元素。`erase()`函数有两种基本原型,分别适用于不同的使用场景。首先,`iterator erase(iterator position);` 这种原型的`erase()`函数接收一个`iterator`参数,指向容器中的某...

C++中stl模版中的erase()和end()(和我之前提的问题不一样)
{ bool bIsExist = false;for (iter _this_is_temp = h.begin(); _this_is_temp != h.end(); ++_this_is_temp){ if ( _this_is_temp == itCompare ){ return true;break;} } return false;} 2.安全地,有保护地erase()\/\/ 保障temp_list_1是有效的 if ( IsExistIter(temp_...

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

[求助]C++中stl模版中的erase()和end()
在循环中要谨慎使用erase 这个会影响容器本身 有可能会导致出错。如果不得不erase 那么最好使用反向循环从end ->begin

C++ 中我运行erase()的时候 老是出现这个 看不懂啊
int main(){string str="This IS A example";for(string::iterator iter=str.begin(); iter!=str.end();){if(isupper(*iter))iter = str.erase(iter);elseiter++;}cout << str;}或 int main(){string str="This IS A example";str.erase(remove_if(str.begin(), str.end(), ...

c++erase函数的使用
C++中的erase函数主要用于从容器中删除元素。该函数可以根据位置或值来删除元素。以下是关于erase函数使用的 一、基于位置的erase 当你需要删除容器中特定位置的元素时,可以使用基于位置的erase方法。例如,在vector中使用该方法:cpp std::vector vec = {1, 2, 3, 4, 5};vec.erase + 2); \/\/ ...

我是个C++菜鸟。我想问一下,c++ string类中的erase()函数怎么用的 最好...
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(0,1)就是删除第一个...

相似回答
大家正在搜