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;
}

posted @ 2007-03-17 18:02  Edward Xie  阅读(179)  评论(0编辑  收藏  举报