一直对STL不熟悉,用的时候也想不到,今天系统归纳一下。
区间(it1, it2)其范围为it1到it2,补包括it2
1.vector
struct Review
{
string title;
int price;
};
bool FillReview(Review& rr)
{
cout<<"Enter book title :";
getline(cin, rr.title);
if("Quit" == rr.title)
{
return false;
}
cout<<"Enter the price:";
cin>>rr.price;
cin.get();
return true;
}
void ShowReview(const Review& rr)
{
cout<<rr.title<<"/t"<<rr.price<<endl;
}
int main()
{
vector<Review> vr;
Review re;
while(FillReview(re))
{
vr.push_back(re);
}
int num = vr.size();
if(num > 0)
{
for(int i = 0; i< num; i++)
ShowReview(vr[i]);
cout<<"begin apply iterator/n";
vector<Review>::iterator pr;
for(pr = vr.begin(); pr != vr.end(); pr++)
{
ShowReview(*pr);
}
vector<Review>newvr(vr);
if(num > 2)
{
newvr.erase(newvr.begin()+1, newvr.begin()+2);
cout<<"After erase......./n";
for(pr = newvr.begin(); pr != newvr.end(); pr++)
{
ShowReview(*pr);
}
(可以替换为 for_each(newvr.begin(), newvr.end(), ShowReview);
这样可以避免显示地使用迭代器变量
)
newvr.insert(newvr.begin(), vr.begin(), vr.begin()+1);//在newvr.begin()之前插入vr.begin(), vr.begin()+1
cout<<"After insert....../n";
for(pr = newvr.begin(); pr != newvr.end(); pr++)
{
ShowReview(*pr);
}
newvr.swap(vr);//交换newvr和vr
cout<<"Swap newvr and vr......./n";
for(pr = newvr.begin(); pr != newvr.end(); pr++)
{
ShowReview(*pr);
}
}
}
system("pause");
}