C++指向矢量的指针

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)


Ed *_* S. 9

 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了首先使用数组的一个主要好处.