数组【Array】是一种顺序容器,包含单一类型的元素。
数组的初始化
int feibo【9】= {0,1,1,2,3,5,8,13,21};
这样的赋值是错误的 int num = feibo[1];
在C++对象可以静态分配内存,即便一起处理程序代码是后进行分配,也可以动态分配,即程序执行时候库函数分配,这两种分配方法的主要区别是效率与灵活性的平衡原则不同。 静态分配都是程序执行前分配的,因而效率比较高,但是缺少灵活性,他要求程序执行前就知道所需的内存类型和数量。一般未知数目的元素需要动态内存分配。
1.静态变量是有名字的哦变量,我们可以直接对其进行操作,而动态变量没有名字,我们只能间接的通过指针对它进行操作。
2.静态变量的分配是释放有编译器完成,程序员不需要关心。动态分配内存程序员就要显式的 创建和释放。
对象的动态分配可通过new表达式的两个表达式来完成
1.第一个是用来分配特定类型的单个对象。int * pint = new int(1024); 删除单个对象 delete pint;
2.第二种是用来分配特定类型和维数的数组 。如 int* pa = new int [4] 删除对象数组 delete []pa;
如果没有释放对象内存,会导致内存泄漏,内存泄漏是指一块动态分配的内存我们不再拥有这块内存的指针,导致以后不能用这块内存。
练习:
int ival = 1024 ;静态分配一块4字节内存存储整形变量并初始化为1024;编译期间分配。
int* pi = &ival; 静态分配一块内存来存储整形指针变量 并且用ival的地址来初始化指针。
int * pi2 = new int (1024); 动态分配内存4个字节存储整形指针变量,并且指向1024的地址。
int*pi3 = new int[1024];动态分配内存4*1024字节,指向所分配内存的首地址。
String
const
vector
vector<int> ievc(10) 相当于ia[10]
vector<int> ievc(10,-1) 初始化10个数每个数都初始化为-1
vector<int> ivec(ia,ia+6) 把 ia中的6个数值拷贝到ivec中
与内置元素不同 vector可以被另一个vector初始化
vector<string> svec;
向vector中插入元素
vector text;
text.push_back("damon");