将我的数组定义更改为矢量或列表?

时间:2013-06-19 08:48:56

标签: c++ visual-studio-2010 memory

根据这个问题,我越来越担心项目中内存的管理,当一个阵列存储器中存在冲突时,我的程序会崩溃。

this posted question的不同答案已经汇总到我将数组更改为Vectors并且我的一些数组定义如下:

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

如何将每一个改为

 std::vector
 std::list?

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

2 个答案:

答案 0 :(得分: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,这是一个动态大小的数组,其大小可以在运行时确定,但在构造后不能更改。

答案 1 :(得分: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);

请参阅vector及其构造函数。