C++ Primer 学习笔记(1)——vector的使用方法

本文介绍了C++中vector的基本概念及其初始化方法,并详细讲解了如何使用迭代器遍历vector容器,包括迭代器的声明、自增和解引用操作等。通过一个具体的排序输出字符串的示例展示了迭代器的应用。


书到手了好几天,今天第一次写学习笔记。看到了对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.迭代器可进行算数操作(如本例的自增)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值