Muk*_*esh 3 c++ pointers vector
我必须将元素插入指向vector的指针.我编写了以下代码,但它给出了分段错误.有人可以指出这段代码中的错误是什么,或者我们如何才能做到这一点.
int main()
{
vector<int> *te;
te->push_back(10);
cout<<te->size()<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Luc*_*ore 16
你永远不会分配矢量:
vector<int> *te = new vector<int>;
Run Code Online (Sandbox Code Playgroud)
此外,您不需要动态分配.更清洁的方式是自动存储:
int main()
{
vector<int> te;
te.push_back(10);
cout<<te.size()<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
vector<int> *te;
te->push_back(10);
Run Code Online (Sandbox Code Playgroud)
你已经声明了一个指针vector; 你还没有将它初始化为指向一段有效的内存.你需要使用构造一个新的向量new.
vector<int> *te = new vector<int>();
Run Code Online (Sandbox Code Playgroud)
但是你不应该这样做.保持指向向量的指针的理由很少,而你只是在管理自己的内部存储器时完全无效.
阅读一点关于RAII的内容.这是一种用于在对象的生命周期内管理动态分配的内存的技术.在vector使用此方法来清理其内部,动态分配的存储空间,当它超出范围.
维护一个指向向量的指针会阻止它正常工作,依赖于你delete自己调用,从根本上消除vector了首先使用数组的一个主要好处.
| 归档时间: |
|
| 查看次数: |
33680 次 |
| 最近记录: |