new double [x] vs vector <double>(x)其中整数x是用户指定的

smi*_*dha 1 c++ vector

假设在代码中我希望用户指定一个整数(比如说x),然后在计算机内存中分配那些连续的单元格,在那里我进行某种处理.

我的问题是将这个内存分配为new double[x]或者"更好" vector<double>(x).

我知道这两种方法似乎都运行正常(即编译并运行至少在这个小小的代码中)

  int x; int* p;
  cout<<"Enter integer x:";cin>>x;
  vector<double> v(x);
  p=new double[x]
Run Code Online (Sandbox Code Playgroud)

如果您认为答案正在使用new那么是否有可能以某种方式神奇地将分配的内存new转换为向量?因为向量会给我更多的操作数据的能力.

Set*_*gie 9

vector由于它提供的许多优点(自动内存管理,边界检查等),最好随时使用.

此外,要让向量保留许多元素供您使用(即在内存中一次分配多个元素而不是在添加元素时最终调整大小),您可以将该数字传递给向量的构造函数:

int x;
cout<<"Enter integer x:";cin>>x;
vector<double> v(x);
Run Code Online (Sandbox Code Playgroud)

或者,如果您已经创建了矢量,请使用vector::resize:

// created v somewhere up here and we want to reuse it
int x;
cout << "Enter integer x: "; cin >> x;
v.resize(x);
Run Code Online (Sandbox Code Playgroud)

不,没有办法告诉矢量使用你已经分配的内存,除非你使用自定义分配器[R. Martinho Fernandes,评论].