容器和迭代器

一、容器

1、容器的理解:容器在日常生活中使用来存放东西的,在c++中容器同样使用来存放东西的,它存放的是数据,这个数据可以是普通数据类型,也可以是抽象数据类型。

2、容器的含义:容器是一个类模板,要求包含的数据类型相同。
3、常用容器:数组是最常见的固定数据长度的容器,链表也是常见的不固定长度的容器,c++定义了一个vector容器,使用时需要包含vector头文件
4、容器的使用:vector容器提供了一些容器的操作和定义,使用者在使用时无需自己动手设计容器。使用时只需指定vector的数据类型,并对模板类实例化即可。

5、容器的初始化:vector<typename>a;                  //创建一个空的vector

                                   vector<typename>a(b);            //用b拷贝a,类比累的构造函数可以使用另一个类初始化

                                   vector<typename>a(n);           //含有n个数据的容器,数值缺省为零

                                   vector<typename>a(n,elem); //创建一个含有n个elem拷贝的容器 

                                   vector<typename>a(beg,end);//创建一个以[beg,end)区间的容器

                                  a~ vector<typename>;    

6、vector容器函数:

                                  a.assign(beg,end)                        //赋值

                                  a.assign(n,elem)

                                  a.at(idx)                                            //返回索引值

                                  a.back()                                            //返回最后一个值

                                  a.begin()                                           //返回第一个数据指针

                                  a.capacity()                                      //返回容量

                                  a.clear()                                            //清除数据,不销毁内存

                                  a.empty()                                          //判断是否为空

                                  a.end()                                              //返回尾部数据指针,指向尾部数据的下一个

                                  a.erase(pos)                                    //删除pos位置的数据,传回下一个数据的位置

                                  a.erase(beg,end)                            //删除区间[beg,end)数据,传回下一个数据位置

                                  a.front()                                              //传回第一个数据

                                  get_allocator                                     //使用构造函数返回一个拷贝

                                  a.insert(pos,elem)                            //在pos位置插入elem拷贝,传回新数据位置

                                  a.insert(pos,n,elem)                        //插入n个数据,无返回值

                                  a.insert(pos,beg,end)                       //在pos位置插入区间数据,无返回值

                                  a.max_size()                                       //返回容器最大数据的数量

                                  a.pop_back()                                      //删除最后一个数据

                                  a.push_back()                                    //在尾部加入一个数据

                                  a.rbegin()                                             //传回一个逆向队列的第一个数据

                                  a.rend()                                                //传回一个逆向队列的最后一个数据的下一个位置

                                  a.resize(num)                                      //重新指定队列长队

                                  a.reserve()                                            //保留适当的容量

                                  a.size()                                                   //返回容器中实际数据的个数

                                  a1.swap(a2)                                         //元素交换

                                  注意:vector<>sizetype  是unsigned型的

二、迭代器

1、定义:迭代器是一个特殊的指针,它指向容器中的一个数据元素,这个数据元素可以是基本数据类型,也可以是抽象数据类型。当迭代器加1时,即指向下一个数据元素。

2、意义:使用迭代器不必编程者人为计算需要跳转的地址,将一个抽象的数据类型看成一个整体,较为直观形象,出错率低

3、迭代器的使用:vector<typename>::iterator ite;

三、示例

#include<iostream>
#include<vector>

using namespace std;

void main()
{
	vector<int>test;                                       //建立一个保存的数据类型为int的容器实例
	vector<int>::iterator ite;                             //建立一个同类型的迭代器

	for (int i = 0; i < 10; i++)
	{
		test.push_back(i+1);                                //初始化test容器
	}

	for (ite = test.begin(); ite != test.end();ite++)       //注意test.end()指针指向最后一个数据地址的下一个地址
	{
		cout << *ite << endl;                               //用迭代器输出容器中的数值(迭代器是一个指针)
	}
	while (1);
}



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值