根据这个问题,我越来越担心项目中内存的管理,当一个阵列存储器中存在冲突时,我的程序会崩溃。
this posted question的不同答案已经汇总到我将数组更改为Vectors并且我的一些数组定义如下:
#define Nb 50
int position[Nb];
double indication[Nb];
double sum[Nb];
如何将每一个改为
std::vector
std::list?
我们可以在更改声明时操纵/处理它们(例如按升序组织它们或覆盖其中一个值)吗?
答案 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及其构造函数。