#include <vector> using namespace std; vector<int> ratings(5); //5个int 的vector int n; cin >> n; vector<double> scores(n); //n个double的vector //由于运算符[]被重载,因此创建vector对象后,可以使用通常的数组表示法来访问各个元素: rating[0] = 9; for(int i = 0; i < n; i++) cout << scores[i] << endl;
size(): 返回容器中元素的数目
swap(vector, vector): 交换两个容器的内容
begin(): 返回一个指向容器中第一个元素的迭代器
end(): 返回一个表示超过容器尾的迭代器
迭代器(iterator): 一个指针,可以执行类似解除引用、递增操作的对象
vector<double>::iterator pd; pd = scores.begin(); *pd = 22.3; ++pd; //也可以使用 C++11 自动推断指针类型 auto pd = scores.begin(); //由迭代器,上述for内容可以改为如下: for(pd = scores.begin(); pd != scores.end(); ++pd) cout << *pd << endl;
可对矢量执行的操作 二
区间概念图
#### 对矢量可执行的其他操作(通常要对数组执行的搜索、排序、随机排序等)STL初涉:for_each( )、random_shuffle( )、sort( )
for_each( )
random_shuffle( )
sort( )
vector<Review>::iterator pr; for(pr = books.begin(); pr!= books.end(); pr++) ShowReview(*pr); //迭代动作 //前两个参数为定义容器中区间的迭代器,最后一个是指向函数的指针(函数对象) for_each(books.begin(), books.end(), ShowReview); //乱序动作 //打乱books.begin()—>books.end() 范围的数据排序 random_shuffle(books.begin(), books.end()); //排序动作 //以 < 方式 vector<int> coolstuff; ... sort(coolstuff.begin(), coolstuff.end()); //如果自定义对象, 就需要提供xxxx < 比较函数代入排序 sort(class.begin(), class.end(), xxxx);