读书人

关于vector的insert函数解决方案

发布时间: 2012-02-09 18:22:27 作者: rapoo

关于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赋值就又可以用了

读书人网 >C++

热点推荐