c++数据类型
1. 基本数据类型
2.类
3. 结构体
3.1 定义与声明(三种方式)
3.1.1
struct type_name {
member_type1 member_name1;
member_type2 member_name2;
member_type3 member_name3;
.
.
} object_names;
3.1.2
Books Book1; // 定义结构体类型 Books 的变量 Book1
Books Book2; // 定义结构体类型 Books 的变量 Book2
3.1.3
typedef struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
}Books;
3.2 访问(两种方式)
. 与 -> 运算符
.(点)运算符和 ->(箭头)运算符用于引用类、结构和共用体的成员:,其中点运算符应用于实际的对象。箭头运算符与一个指向对象的指针一起使用。
4. 枚举类型
enum 枚举名{
标识符[=整型常数],
标识符[=整型常数],
...
标识符[=整型常数]
} 枚举变量;
如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始。
enum color { red, green, blue } c;
c = red;
默认情况下,第一个名称的值为 0,第二个名称的值为 1,第三个名称的值为 2,以此类推。但是,也可以给名称赋予一个特殊的值,只需要添加一个初始值即可。
enum color { red, green=5, blue };
在这里,blue 的值为 6,因为默认情况下,每个名称都会比它前面一个名称大 1,但 red 的值依然为 0。
5. 共用体 union
能够存储不同的数据类型,但是只能同时存储其中的一种类型。(与结构体相似但是实际有很大不同)
union one4all
{
int int_val;
long long_val;
double double_val;
};
可以使用one4call变量来存储int、long或double变脸,但是需要在不同的时间内进行。(像魔形女一样)
6. 向量(vector)
在C++中容器的定义为:在数据存储上,有一种对象类型,它可以持有其它对象或其它对象的指针,这种对象类型就成为容器。
在现在几乎所有的面向对象的语言中都伴随着一个容器集,在C++中,就是标准模板库(STL)。
与其它语言不一样,C++中处理容器是采用基于模板的方式,标准C++库中的容器提供了多种数据结构。
STL可以具体分为以下三类:顺序性容器、关联式容器和容器适配器。其中向量(vector)就属于顺序性容器。
向量(vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。与其它类型的容器一样,它能够存放各种类型的对象。可以简单地认为,向量是一个能够存放任意类型的动态数组。
注意:
1.向量是少数几个可以通过下标访问对象的容器之一。(容器一般采用迭代器iterator进行访问,迭代器类似于指针,使用的时候要按照*iterator的格式);
2.当向量长度较长时,容易导致内存泄露,并且效率很低。具体原因:在创建一个vector 后,它会自动在内存中分配一块连续的内存空间进行数据存储,初始的空间大小可以预先指定也可以由vector 默认指定,当存储的数据超过分配的空间时vector 会重新分配一块内存块,但这样的分配是很耗时的,在重新分配空间时它会做这样的动作:首先,vector 会申请一块更大的内存块;然后,将原来的数据拷贝到新的内存块中;其次,销毁掉原内存块中的对象(调用对象的析构函数);最后,将原来的内存空间释放掉;
3.Vector 作为函数的参数或者返回值时,需要注意它的写法:
double Distance(vector<int>&a, vector<int>&b)
注意&符号;
4.二维向量如下所示:
vector< vector< int> >v;
注意,最外面的<>要有空格,否则在较旧的编译器下无法通过。