C++标准库类型——vector

接上一篇,在这一篇中详细介绍一下C++标准库的vector类型。

一 标准库vector类型

vector是同一种类型对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库将负责管理与存储字符相关的内存。将vector称之为容器是因为它可以包含其他对象。一个容器中的所有对象都必须是同一种类型的。

在使用vector之前,必须包含相应的头文件。

#include<vector>

using std::vector; 

vector是一个类模板(class template),类模板的定义将在后续博文中再做介绍。使用模板可以编写一个类定义或函数定义,而用于多个不同的数据类型。因此,我们可以定义保存string对象的vector,或保存int值的vector,又或是保存自定义的类类型对象的vector

声明从类模板产生的某种类型对象,需要提供附加信息,信息的种类取决于模板,以vector为例,必须说明vector保存何种对象的类型,通过将类型放在类模板名称后面的尖括号中来制定类型:

vector<int>  ivec;//ivec holds objects of int

vector<Sales_item> Sales_vec;//Sales_vec  holds Sales_item和其他变量的定义一样,定义vector对象要制定类型和一个变量的列表。

第一个定义:类型是 vector<int> ,该类型即是含有若干 int 类型对象的 vector,变量名为ievc

第二个定义:变量名是Sales_vec ,它所保存的元素是 Sales_item类型的对象,Sales_item 可以是结构体或其他的数据类型。 

vector对象的操作

v.empty()  如果v为空,则返回true,否则 返回false

v.size()   返回v中元素的个数

v[n]    返回v中位置为n元素,位置从0开始计数

v1 == v2  把v1的元素替换为v2中元素的副本

v1 = = v2   比较v1v2是否相等

!=,<,<=,>,>=   保持这些操作符惯有的含义

实例:

// vectortest.cpp : 定义控制台应用程序的入口点 
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;
#include <string>
using std::string;
#include<vector>
using std::vector;
 
struct A{
A(){
clear();
}
int a;
double b;
char c;
void clear()
{
a=0;
b=0.01;
c=' ';
}
 
};
 
int _tmain(int argc, _TCHAR* argv[])
{
vector<A> vecA(3);//创建了3个空对象
cout<<"1:"<<vecA.size()<<endl;
A a;
a.a=1;
a.b=2.222;
a.c='a';
vecA.push_back(a);//向vector中添加元素
cout<<"2:"<<vecA.size()<<endl;
vector<int> ivec1;
for (vector<int>::size_type ix=0;ix<5;++ix)
{
ivec1.push_back(ix);
}
vector<int> ivec2(ivec1);
vector<int> ivec3(10,-1);//10个元素,每一个初始化为-1
for (vector<int>::size_type ix=0;ix<ivec3.size();++ix)
{
//警告:仅能对确知已存在的元素进行下标操作
ivec3[ix]=ix;
}
vector<string> ivec4(4,"Hi");//3个元素,每一个初始化为 Hi
system("pause");
return 0;
}

运行结果:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

法哥2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值