使用指针时,C 显示向量

C++ Displaying a Vector when using a pointer

本文关键字:显示 向量 指针      更新时间:2023-10-16
#include <iostream>
#include <vector>
int main()
{
     unsigned int numVec;
     unsigned int input;
     std::cout << "Enter Number of Vectors: ";
     std::cin >> numVec;
     std::vector<int>* Vec;
     for (unsigned int i = 0; i < numVec; i++)
     {
          std::cout << "Enter Vector Value " << i << ": ";
          std::cin >> input;
          Vec->push_back(input);
     }
     std::cout << std::endl;
     for (unsigned int i = 0; i < Vec->size(); i++)
     {
          std::cout << "Value at Index (" << i << ") " <<  Vec->at(i) << std::endl;
     }
     std::cout << std::endl;
     return 0;
}

我正在尝试学习媒介的工作方式,因为这是一个主题,我一直坚持很长时间以来就没有出于理由。

我的上面代码将编译并运行,但是一旦我将一个数字存储在向量中,它将崩溃

我只是在不使用指针的情况下使用矢量之前就可以使用该程序,但仅出于学习原因,我想尝试使用指针,我只是想知道我在此代码上做错了什么,如果某人可能会火焰我做某事或在这种情况下我做错了什么,所以我可以学习以后的参考。

替换

std::vector<int>* Vec;

std::vector<int> vec;

并用成员选择操作员.

代替成员操作员->

仅在极少数情况下,您才需要为std::vector实例使用动态存储,因为该类在为您管理内存方面做得很好。当前,您不是在为矢量分配任何内存,并且代码的行为是 undfined

如果您必须使用指针,则写

std::vector<int>* vec = new std::vector();

并且完成后不要忘记致电delete vec;。考虑使用std::unique_ptr&amp; c。因此delete自动照顾。

我的上面代码将编译并运行,但是一旦我将一个数字存储在向量中,它将崩溃。

什么向量?

您从未创建向量。

您只创建了一个指针,一个(a(是非初始化的,并且(b(没有指向任何东西,更不用说A(c(向量。