C++基础 第三章 数组、vector与字符串

1 数组引入

将一到多个相同类型的对象串连到一起,所组成的类型。int b[10]的类型是int[10],int与int[1]也不同

- 初始化方式

        缺省初始化

        聚合初始化

- 不能用auto来声明

- 不能复制,数组必须用大括号的方式来初始化 

-  字符串数组的特殊性 可以简化携程 char str[] = "Hello",这样写的话是char[6],最后一位会被补个\0,表示字符串的结束

数组的复杂申明

int* a[3] 每一个元素都是指针,指针的数组

int (*a)[3]  此时a的类型是int(*)[3],数组的指针

int (&a)[3] = b 数组的引用 

b[1] -> *(b+1)

从数组到指针

链接的时候会把数据类型丢掉

extern int array[]; 需要这样写

其他操作

求元素的个数

        sizeof 如果改类型就会错,也不太好

        std::size

        (c)end-(c)begin 这种情况会在运行期执行,不太好

元素遍历

        基于元素个数

        基于begin/end

        基于range-based for循环 

多维数组

int x2[3][4]

(int int int int)(int int int int)(int int int int)

 聚合初始化,不用大括号就会直接排。用两层大括号就会自动补0给每个“行” 

Vector

类似数组,侧重应用性,是C++标准库中定义的一个类模板 

#include

 特点:支持复制、可在运行期改变数组个数

初始化方式:聚合初始化,跟数组一样。

std::vector x(3)。初始化之后x中三个元素都是0

std::vector x(3,1).初始化之后三个元素都是1

元素索引:跟数组一样,或者x1.at(2)

指向元素:x1.begin(). x1.end(). 或者begin(x1) end(x1)。用这个方式可以遍历vector

多维:std::vector> x;

string

C++模板 #include

与内建字符串相比更有易用性

        

你可能感兴趣的:(c++,开发语言)