STL 对矢量可执行操作
size()-------------返回容器中元素个数
swap()-------------交换两个容器内容
begin()------------返回指向容器第一个元素的迭代器
end()--------------返回一个超尾迭代器
rbegin()-----------返回一个超尾反向迭代器
rend()-------------返回指向容器第一个元素的反向迭代器
maxsize()----------返回容器最大长度
empty()------------容器为空返回 true
== ---------------长度等 值同 顺序同 返回true
!= ---------------a!=b !(a==b)
< ---------------a按字典排b前面 则a<b返回true
> ---------------a>b 返回 b<a
<= ---------------a<=b 返回 !(a>b)
>= ---------------a>=b 返回 !(a<b)
//////////////////////////////////////////////////////////////////////
push_back(容器中元素类型的值) -----------向容器尾加一个元素
erase(迭代器,迭代器) --------------------删除迭代器区间
insert(被插入迭代器,迭代器区间,迭代器区间)-------把区间值插入被插入迭代器
/////////////////////////////////////////////////////////////////////
//
//vector1.cpp
//
/////////////////////////////////////////////////////////////////////
// vect2.cpp -- methods and iterators
#include <iostream>
#include <string>
#include <vector>
struct Review {
std::string title;
int rating;
};
bool FillReview(Review & rr); //FillReview
void ShowReview(const Review & rr);//ShowReview
int main()
{
using std::cout;
using std::vector;
vector<Review> books;
Review temp;
while (FillReview(temp))
books.push_back(temp); //push_back()
int num = books.size(); //size()
if (num > 0)
{
cout << "Thank you. You entered the following:\n"
<< "Rating\tBook\n";
for (int i = 0; i < num; i++)
ShowReview(books[i]);
cout << "Reprising:\n"
<< "Rating\tBook\n";
vector<Review>::iterator pr; //iterator
for (pr = books.begin(); pr != books.end(); pr++)//begin() end()
ShowReview(*pr);
vector <Review> oldlist(books);
if (num > 3)
{
books.erase(books.begin() + 1, books.begin() + 3);//erase()
cout << "After erasure:\n";
for (pr = books.begin(); pr != books.end(); pr++)
ShowReview(*pr);
books.insert(books.begin(), oldlist.begin() + 1,//insert()
oldlist.begin() + 2);
cout << "After insertion:\n";
for (pr = books.begin(); pr != books.end(); pr++)
ShowReview(*pr);
}
books.swap(oldlist); //swap()
cout << "Swapping oldlist with books:\n";
for (pr = books.begin(); pr != books.end(); pr++)
ShowReview(*pr);
}
else
cout << "Nothing entered, nothing gained.\n";
std::cin.get();
return 0;
}
bool FillReview(Review & rr)
{
std::cout << "Enter book title (quit to quit): ";
std::getline(std::cin,rr.title);
if (rr.title == "quit")
return false;
std::cout << "Enter book rating: ";
std::cin >> rr.rating;
if (!std::cin)
return false;
std::cin.get();
return true;
}
void ShowReview(const Review & rr)
{
std::cout << rr.rating << "\t" << rr.title << std::endl;
}