首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于vector的insert函数解决方案

2012-02-09 
关于vector的insert函数为什么vector的几个重载的insert函数返回值不同,插入值的类型也不同,例如:stringst

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

热点排行
Bad Request.