0

根据那个问题,我越来越担心项目中内存的管理,当其中一个数组内存发生冲突时,我的程序会崩溃。

对这个发布的问题的不同答案已经收敛到我将数组更改为 Vectors 的事实,并且我的一些数组定义如下:

#define Nb 50
int position[Nb];
double indication[Nb];
double sum[Nb];

如何将它们中的每一个更改为

 std::vector
 std::list?

我们可以在更改声明时操作/处理它们(例如按升序组织它们或覆盖其中一个值)吗?

4

2 回答 2

2

您正在使用固定大小的数组,

#define Nb 50
int position[Nb];

这些的现代 C++ 替代方案是std::array,而不是std::vector

std::array<int, 50> position;

std::vector是一个动态大小的数组,其大小可以在运行时确定,并且可以在构造后更改。

int n;
std::cin >> n;
std::vector<int> v(n); // vector has n value constructed ints
v.push_back(42); // v has n+1 ints now.

C++14 提供std::dynarray了一个动态大小的数组,其大小可以在运行时确定,但在构造后不能更改。

于 2013-06-19T08:55:19.613 回答
1

语法如下:

#define Nb 50
std::vector<int> position(Nb); // create std::vector holding ints, Initial size is 50

您还应该避免使用#define,而是使用const,这更多C++

const int Nb = 50; //maybe wrap Nb in a namespace
 std::vector<int> position(Nb);

请参阅向量及其构造函数。

于 2013-06-19T08:50:52.657 回答