-
vector是一个序列式容器,可以实现队列、数组和堆栈的所有功能。像一个动态数组,可以随机访问元素,迭代器也是随机存取迭代器。
-
初始化,清空,删除,插入等基本操作
#include <vector> //包含头文件
#include <string>
using namespace std;
vector<string> myvt; //初始化
myvt.push_back("a"); //将对象放入容器尾部
myvt.pop_back(); //从容器尾部删除对象
myvt.earse(myvt.begin()); //删除第一个对象
cout << myvt.front(); //返回第一个元素
cout << myvt.back(); //返回最后一个元素
//insert()用于在指定的位置进行插入
myvt.insert(myvt.begin(), "c"); //在第一个元素之前插入
myvt.insert(myvt.end(), myvt2.begin(), myvt2.end()); //在尾部插入一段元素
//定义vector类对象但未设置容器大小,不允许给容器中元素赋值
myvt.reserve(4); //预设容器大小
myvt[0] = "a";
myvt[1] = "b";
int a = myvt.size(); //返回容器中现有的元素数量
int b = myvt.capacity(); //返回容器中实际能容纳的元素数量
bool c = myvt.empty(); //判断容器是否为空
myvt.clear(); //清空容器
- 遍历容器
//STL迭代器刚好指向每个元素,begin指向第一个元素,end指向超尾元素
vector<string>::iterator it;
for(it = myvt.begin(); it != myvt.end(); it++)
cout << *it << endl;
//可以用at()遍历容器
for(int i = 0; i < myvt.size(); i++)
cout << myvt.at(i);
//for_each()可以用来按给定的算法遍历容器
void printOut(string a) {cout << a << endl;}
for_each(myvt.begin(), myvt.end(),printOut);
//count_if()可以按给定的算法遍历容器并计数
bool ifNull(string a)
{
if(a.empty()) return true;
else return false;
}
int count = count_if(myvt.begin(), myvt.end(), ifNull);
- 查找,排序算法
//使用STL通用算法,find()可用于查找vector中的指定元素,find_if()用于有条件查找,查找不到时返回的迭代器指向end()
vector<int> myvt;
vector<int>::iterator it;
it = find(myvt.begin(), myvt.end(), 1);
it = find_if(myvt.begin(), myvt.end(), bind2nd(greater<int>(),5));
//sort()用于元素排序,默认使用<运算符,类中元素要支持这个运算符
class student
{
public:
student(const string& a, double b):m_name(a), m_score(b){}
string m_name;
double m_score;
bool operator<(const student& m) const
{return m_score < m.m_score;}
};
bool nameSortLess(const student& m, const student& n)
{return m.m_name < n.m_name;}
vector<student> myvt;
sort(myvt.begin(), myvt.end()); //sort()默认使用类的重载运算符<
sort(myvt.begin(), myvt.end(), nameSortLess) //sort()使用显示定义了的函数进行排序
- 对象交换,两vector容器中元素类型不同时不能交换
vecrot<int> myvt1;
vecrot<int> myvt2;
myvt1.swap(myvt2); //注意仅myvt1的内容发生变化
swap(myvt1, myvt2); //都发生变化
STL中的vector是一个序列式容器,兼备队列、数组和堆栈特性,提供随机访问和迭代器功能。本文将探讨vector的基本操作,如初始化、清空、删除和插入,以及遍历、查找和排序算法的应用。请注意,不同类型的vector对象无法交换元素。
1万+

被折叠的 条评论
为什么被折叠?



