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

vector<char *> 对象的初始化有关问题

2012-05-13 
vectorchar * 对象的初始化问题[codeC/C++][/code]char *sa[]{ebb,string,seires,gallow}lis

vector<char *> 对象的初始化问题
[code=C/C++][/code]
char *sa[]={"ebb","string","seires","gallow"};
list<char *> pch(sa,sa+4);
为什么可以让一个双重指针赋给一个普通指针呢,而不会报错呢

而下面的赋值语句是有明确错误的
char *e=sa;
这个在编译时,说:无法从“char *[4]”转换为“char *”

求解释

[解决办法]
为什么可以让一个双重指针赋给一个普通指针呢,而不会报错呢

哪里看出有双重指针赋值给普通指针,你看清楚点

它是把指针数组的每一个元素,即每一个指针,都放入容量里。

你把char* 都替换成int,看看能不能理解。
[解决办法]
list<char *> pch(sa,sa+3);//
楼主应该是理解错了list这个构造函数的意思了。
list(first,last) 
这个构造函数是说,list中的值,由first开始直至last所指的值进行初始化
[解决办法]
list<char *> pch(sa,sa+4);调用了list的
template<class _Iter>
list(_Iter _First, _Iter _Last)这个构造函数,这里应该传2个迭代器,由于原生指针可以视为迭代器,所以调用可以成功。list里面存储的是char*,因此构造函数传的参数应该是指向char*的指针,即char**。
[解决办法]
楼主把构造函数的意义理解错了。他误以为把指针赋值给list里面的呢。仔细看看STL吧

热点排行