关于vector的insert函数
为什么vector的几个重载的insert函数返回值不同,插入值的类型也不同,例如:
string str;
str.insert(0, 'a ');//不能通过编译,cannot convert parameter 2
//from 'char ' to 'const std::basic_string <_Elem,_Traits,_Ax> & '
string::iterator begin = str.begin();
str.insert(begin, 'a ');//可以通过编译
是因为参数一的类型不同,而导致第二个参数必须这样,还是别的原因呢?
[解决办法]
自己认真看帮助吧
iterator
insert(iterator position, const T& x);
Inserts x before position. The return value points to the inserted x.
void
insert(iterator position, size_type n, const T& x);
Inserts n copies of x before position.
template <class InputIterator>
void
insert(iterator position, InputIterator first,
InputIterator last);
Inserts copies of the elements in the range [first, last] before position.
[解决办法]
是因为重载的原因, 改成如下就行了.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
str.insert(0,string( "a "));
string::iterator begin = str.begin();
str.insert(begin, 'a ');
cout < < str < < endl;
}
[解决办法]
str.insert(0, 'a ');//不能通过编译,cannot convert parameter 2
//from 'char ' to 'const std::basic_string <_Elem,_Traits,_Ax> & '
-------
0是数字
string::iterator begin = str.begin();
str.insert(begin, 'a ');//可以通过编译
---
begin是迭代器
[解决办法]
你要愿意保存以前的偏移量,然后改变数组阿,string阿,容器阿的大小以后,再利用begin()+偏移量再次给it赋值就又可以用了