C++(二)数据类型

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; 

注意,最外面的<>要有空格,否则在较旧的编译器下无法通过。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值