vector<char*>
voidmain(){vector<char*>temp=vector<char*>(3);chara='0';if(temp[0]==NULL){char*b=temp...
void main()
{
vector<char*> temp=vector<char*>(3);
char a='0';
if(temp[0]==NULL){
char* b=temp[2];
cout<<*b;
}
}
调试的时候查看temp[2]的值,但是显示
temp[2] CXX0058: Error: overloaded operator not found
在网上搜了一下,说是vector不能直接用[]来访问值。什么意思? = =
怎么访问temp[2]?
哦,开头的那句好像应该是 vector<char*> temp(3);
不过还是同样的问题……
这个问题好像解决了……其实我想问的是下边的问题,好像和上边的不同。
在下边这个类中:
class Glob {
public:
vector<HeapPosi> todeal;
//初始化
void ini(Rank);
Glob(Station s){
vector<HeapPosi> todeal=vector<HeapPosi>((s+1)*s);}
/*blablabla*/
};
初始化完了以后,当时显示的是有值的,但是初始化完了再访问的时候就显示越界了。这是为什么?怎么办? 展开
{
vector<char*> temp=vector<char*>(3);
char a='0';
if(temp[0]==NULL){
char* b=temp[2];
cout<<*b;
}
}
调试的时候查看temp[2]的值,但是显示
temp[2] CXX0058: Error: overloaded operator not found
在网上搜了一下,说是vector不能直接用[]来访问值。什么意思? = =
怎么访问temp[2]?
哦,开头的那句好像应该是 vector<char*> temp(3);
不过还是同样的问题……
这个问题好像解决了……其实我想问的是下边的问题,好像和上边的不同。
在下边这个类中:
class Glob {
public:
vector<HeapPosi> todeal;
//初始化
void ini(Rank);
Glob(Station s){
vector<HeapPosi> todeal=vector<HeapPosi>((s+1)*s);}
/*blablabla*/
};
初始化完了以后,当时显示的是有值的,但是初始化完了再访问的时候就显示越界了。这是为什么?怎么办? 展开
3个回答
展开全部
vector可以直接用[]来访问,但在调试的状态下,调试工具是不能直接使用[]的。只有在代码中才能用[]。
vector<char*> temp=vector<char*>(3);是定义了长度为3的vector,而且3个数据初始化都为0。
所以char *b=temp[2];后,b的值为NULL,所以输出*b会导致错误。
vector<char*> temp=vector<char*>(3);是定义了长度为3的vector,而且3个数据初始化都为0。
所以char *b=temp[2];后,b的值为NULL,所以输出*b会导致错误。
追问
哦,好像的确可以访问b。。。不能访问temp【1】。
恩恩,我再看看……
膜拜一下先
~~~~~~~~~~~~~~~~~~~~~~~~亲,帮我看下问题补充吧~~~~~~~~~~~~~~~~~~~~
追答
Glob(Station s){
vector todeal=vector((s+1)*s);}
你这里等于是又定义了一个局部变量todeal了,这个todeal不是类的成员todeal。
展开全部
vector<char*> temp=vector<char*>(3);
啥意思啊
啥意思啊
追问
哦,好像应该写成 vector temp(3);
但是还是上边的问题啊。完全一样的问题。访问不了temp[1]
~~~~~~~~~~~~~~~~~~~~~~亲,帮我看下问题补充哈~~~~~~~~~~~~~~~~~~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你没初始化...temp本来就空的
更多追问追答
追问
调试的时候发现vector自动给赋空值了。
即使没有初始化,temp不是也应该有3个没初始化的元素吗?
追答
都没哟初始化 哪来的东西 乱码应该 你可以看下b的值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询