Arrays in c++

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>
  • <类型, 大小>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值