C++是一种静态的数据类型,在编译器进行类型的检查,代码执行是从上到下的执行,以函数为执行单元。因他是面向过程的。
默认的int,short,long都是带符号类型的,添加unsigned 进行修饰,可以设置为无符号类型,表示不接收负数,节约空间。
注:C语言运行时只有堆和栈内存,数据段,代码段,BSS段在编译时由编译器决定。
数组的定义格式是:类型 数组名【元素个数】,也可赋初始值,不赋值时默认是0,数组的定义是一块连续的内存空间,其大小创建时已经固定。
int arr[5]={1,4,5};
使用时,可以根据下标直接访问
例如arr[2]就是取出数组中下标为2的元素值。
可以使用负值下标。
使用双引号括起来的就是字符串常量。“\0”是标识字符串结束的一串字符。
字符串是基于字符数组进行扩展实现的。
cout用于字符串输出,cin用于字符串输入。
字符串变量的定义
string str,str1;
也可以在定义时赋初始值,这样可以直接操作字符串。直接使用字符串的+或=操作。
描述一个复杂对象组合成一个整体时可以使用结构体。
例如
struck book{
char author;
int age;
}
使用了面向对象的思想
共用体
允许在相同的位置存储不同的数据类型,提供了一种使用相同内存位置的有效方式,同时只有一个对象有赋值。
使用时,用union修饰。
union MyStudent{
}
动态数组,长度动态可变,在运行时,动态赋值,不用考虑空间问题,可以通过下标和迭代器访问,可以整体赋值。
使用时需要添加头文件
定义时需要指出数据类型和规模,规模可以是变量。
例如
vector v1;
效率比vector 高,规模固定
例如
array<int ,5> a1;
相较于数组,array可以直接互相赋值。
基于Array的基础上实现了更加强大的扩展功能
例如
1)返回包含的元素数
2)所有元素总和
3)返回最大的元素
4)返回最小的元素
定义
int a[3][4];表示,定义了一个有三元元素的数组,每个元素是一个长度为4的数组
int a[3][4] ={{1,2,3,4},{5,3,2,1},{3,4,5,6}}
在C++中容器分为序列式和关联式,存放一组同类型的对象。
容器内元素唯一,使用end表示结尾
set<int> m_set;
m_set.insert(1);
m_set.insert(2);
m_set.clear();//清空set
键值对的存储容器,键值不能为空,使用时需要导入
map<string int> m_map;
m_map.insert("zhans", 1);
基本方法
函数名 | 功能 |
---|---|
my_map.insert() | 按照数组直接赋值 插入 |
my_map.find() | 查找一个元素 |
my_map.clear() | 清空 |
my_map.erase() | 删除一个元素 |
my_map.size() | map的长度大小 |
my_map.begin() | 返回指向map头部的迭代器 |
my_map.end() | 返回指向map末尾的迭代器 |
my_map.rbegin() | 返回一个指向map尾部的逆向迭代器 |
my_map.rend() | 返回一个指向map头部的逆向迭代器 |
my_map.empty() | map为空时返回true |
my_map.swap() | 交换两个map,两个map中所有元素都交换 |
一个抽象的指针,可以遍历容器中所有的对象,不同的容器对应着不同的迭代器,被定义为容器类的公有内嵌类。
iterated find_ar(iterator ar,int n,const double &val){
for(int i=0;i
容器的迭代器一般提供两个函数,begin和end 标识容器开头和结尾。