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*/
};
初始化完了以后,当时显示的是有值的,但是初始化完了再访问的时候就显示越界了。这是为什么?怎么办?
展开
 我来答
忘至白葬不情必0T
推荐于2017-09-09 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
vector可以直接用[]来访问,但在调试的状态下,调试工具是不能直接使用[]的。只有在代码中才能用[]。
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。
wenluma
2011-12-16 · 超过14用户采纳过TA的回答
知道答主
回答量:69
采纳率:100%
帮助的人:39万
展开全部
vector<char*> temp=vector<char*>(3);
啥意思啊
追问
哦,好像应该写成	vector temp(3);
但是还是上边的问题啊。完全一样的问题。访问不了temp[1]
~~~~~~~~~~~~~~~~~~~~~~亲,帮我看下问题补充哈~~~~~~~~~~~~~~~~~~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鹤唳云衫8
2011-12-16 · TA获得超过241个赞
知道答主
回答量:298
采纳率:0%
帮助的人:130万
展开全部
你没初始化...temp本来就空的
更多追问追答
追问
调试的时候发现vector自动给赋空值了。
即使没有初始化,temp不是也应该有3个没初始化的元素吗?
追答
都没哟初始化 哪来的东西 乱码应该 你可以看下b的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式