书到手了好几天,今天第一次写学习笔记。看到了对vector迭代器的使用方法,需要mark一下。
vector类型
首先,vector是一个类模版(class template)。使用模版可以编写一个类定义或是函数定义,而用于多种不同的数据类型。因此,可以保存多种类型的vector,例如vector<int>,vector<double>,vector<char>,vector<string>等等,当然可以是自定义的类型,如下代码:
typedef example
{
int element1;
char element2[10];
}definetype;
vector<definetype> a;
初始化vector
初始化vector有四种方法,分别是:
vector<T> v1;//vector保存类型为T的对象,默认构造函数,v1为空
vector<T> v2(v1);//v2是v1的一个副本
vector<T> v3(n,i);//v3是包含n个值为i的元素的(C++也可以如此赋值,std::string a(10,'a');a="aaaaaaaaaa")
vector<T> v4(n);//v4含有值初始化的元素的n个副本,就是n个空值。
对vector元素的操作
这里只写迭代器操作,不赘述下标操作。C++中迭代器为了实现其连续性,采取了申请非连续内存空间的方法。目前不懂- -
迭代器定义及声明
迭代器(iterator)是一种数据类型,它可检查容器内元素并遍历元素。
请如下声明:
vector<T>::iterator iter;//T means the data type
vector迭代器的自增和解引用运算
迭代器类型可以用解引用操作符(*)来访问迭代器所指元素:
*iter=0;//赋值为0,给当前迭代器所指元素
如果使用const_iterator,不会改变所指元素的值,即不允许用const_iterator进行赋值。
请注意,不能把const_iterator与const的iterator混为一谈,前者不能够写元素,后者的值是不可改变的。
迭代器应用实例
#include <iostream>
#include <string>
#include <vector>
#include <functional>
#include <algorithm>
using namespace std;
int main()
{
int n;
string a;
vector<string> vec;
cin>>n;
while(n--)
{
cin>>a;
vec.push_back(a);
}
sort(vec.begin(),vec.end(),less<string>());
cout<<endl;
for(vector<string>::iterator iter=vec.begin();iter!=vec.end();++iter)
{
cout<<*iter<<endl;
}
}
上述程序实现了输入n个字符串,对字符串进行升序排序并输出的功能。
其中:
1.string类型可以支持长度变化的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作。string类型的赋值依然有四种方式,如下:
string v1;//string默认构造函数,v1为空
string v2(v1);//v2是v1的一个副本
string v3("aaa");//将v3初始化为一个字符串字面值副本
string v4(n,'c');//将v4初始化为字符'c'的n个副本
2.sort排序,less<string>()升序
3.*iter表示当前迭代器所指容器元素
4.迭代器可进行算数操作(如本例的自增)