p.s.C++数组的基本和C语言中类似,在此就只补充一些之前不够了解和熟练的方法!
new方法:
int * another = new int[5];
这样创建的数组和普通方法int example[5]
中的生命周期有很大的不同:
new方法创建的数组必须就要用到delete才可以删除!
int * another = new int[5];
delete[] another
在内存中却有很大的不同:
class Entity
{
public:
int example[5];
Entity()
{
for (int i = 0; i < 5; i++)
{
example[i] = 2;
}
}
};
int main()
{
Entity e;
std::cin.get();
}
在内存中输入&e可以直接看到e的值
02 00 00 00
但是使用new方法的时候,就只能看到另一个内存地址了
class Entity
{
public:
int* example = new int[5];
Entity()
{
for (int i = 0; i < 5; i++)
{
example[i] = 2;
}
}
};
int main()
{
Entity e;
std::cin.get();
}
但是在内存中寻找该指针的地址时,就可以看到e的值 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00
这样的方法也就是说:代码首先到达实体Entity,然后到达数组
像这样的跳来跳去绝对是对性能的巨大打击!
补充一种c++11库的新写法!
#include <iostream>
#include <string>
#include <array>
class Entity
{
public:
//static const int exampleSize = 5;
//int example[exampleSize];
std::array<int, 5> another;
Entity()
{
for (int i = 0; i < another.size(); i++)
{
another[i] = 2;
}
}
};
注意
- 要有头函数
#include <array>
- <类型, 大小>