- 已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
2天前关闭。
Improve this question
我有一个指针指向我的IDE中的向量设置,但我不认为我这样做是正确的,因为每次我试图推回数据到它的程序崩溃在代码中的这一点。
例如:
std::vector<int> a; std::vector<std::vector<int> > *a1;
a.push_back(3);
a1->push_back(a); // Right here the program crashes with no indication prior to execution that there was an error.
我见过这个网站的一些其他用户有向量的指针初始化,但现在我想起来了,我不记得他们真的访问他们把数据或编辑后。也许这就是为什么我在这一点上卡住得到崩溃。所以有人能解释为什么它和发生如何做正确的向量指针。我想访问向量a1像这样:
cout<<" value is: "<<(*a1)[0][0] + 4 <<endl; // I cant even reach this far when the program runs
这是怎么回事我不明白吗?
1条答案
按热度按时间14ifxucb1#
a
是一个向量。下面是a
的声明(和定义):a1
是一个指向向量的指针。下面是a1
的声明和定义,但是 * 指针没有指向定义的位置 *(感谢@user4581301指出这一点):为了定义
a1
中的值,可以分配已经存在的矢量的地址或者经由new
分配新矢量,例如上述代码的目的是展示如何通过
&
的地址或new
操作符获得对象**的地址。说到“最佳实践”,我会说,避免指针使用引用。但是当需要分配时,那么
unique_ptr
或shared_ptr
对象中(例如在未捕获异常的情况下,保证对已分配内存块的解除分配)例如:
例如: