动态分配向量(或向量的向量)

新手上路,请多包涵

我需要动态分配大小在运行时给出的一维和二维数组。

我设法“发现”了 std::vector 我认为它符合我的目的,但我想问一下我写的内容是否正确和/或可以改进。

这就是我正在做的事情:

 #include <vector>

typedef std::vector< std::vector<double> > matrix;

//... various code and other stuff

std::vector<double> *name = new std::vector<double> (size);
matrix *name2 = new matrix(sizeX, std::vector<double>(sizeY));

原文由 Federico 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 891
2 个回答

正如您所发现的,当您在运行时给出维度时,需要动态分配数组。

然而, std::vector 已经是这个过程的 _包装_,所以动态分配向量就像双重肯定。这是多余的。

只需编写 (C++98):

 #include <vector>

typedef std::vector< std::vector<double> > matrix;
matrix name(sizeX, std::vector<double>(sizeY));

或(C++11 及更高版本):

 #include <vector>

using matrix = std::vector<std::vector<double>>;
matrix name(sizeX, std::vector<double>(sizeY));

原文由 Lightness Races in Orbit 发布,翻译遵循 CC BY-SA 4.0 许可协议

 #include < iostream >
 #include < vector >

 using namespace std;

int main(){

vector<int>*v = new vector<int>();   // for 1d vector just copy paste  it

v->push_back(5);
v->push_back(10);
v->push_back(20);
v->push_back(25);

for(int i=0;i<v->size();i++){
    cout<<v->at(i)<<" ";
}
cout<<endl;

delete v;

system("pause");
return 0;

     }

原文由 Himanshu Gupta 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题