容器和迭代器


#include<iostream>
#include<vector>
using namespace std;
class stu
{
    private:
        string name;
        int id;
    public:
        stu(string n,int i):name(n),id(i){}
        void show()
        {
            cout<<name<<"--------"<<id<<endl;
        }
};
int main()
{
    stu *p1=new stu("aa",11);//-------------添加容器V2
    stu *p2=new stu("bb",22);
    vector<stu*>v2;
    v2.push_back(p1);//--------------vector::void push_back (const value_type& val);

                     // -------------vector::void push_back (value_type&& val);

                     //--------------   该函数将一个新的元素加到vector的最后面,
                     //--------------   位置为当前最后一个元素的下一个元素,
                     //--------------   新的元素的值是val的拷贝(或者是移动拷贝

    v2.push_back(p2);

    vector<stu*>::iterator it2;//-----------------添加迭代器it2
    for(it2=v2.begin();it2!=v2.end();it2++)
        (*it2)->show();//-------------------此处输出结果为 aa---------11,
                       //                                  bb---------22



    cout<<"1========================================================================"<<endl;

    vector <stu>v;//---------------------添加容器V
//添加元素//
    stu s("aaa",111);
    stu s2("bbb",222);
    v.push_back(s);
    v.push_back(s2);

//遍历//
    vector<stu>::iterator it;//------------添加迭代器it
    for(it=v.begin();it!=v.end();it++)
    {
        it->show();//----------------------注释掉18-35行,输出aaa--------111,
                 //                                          bbb--------222
    }

    cout<<"2========================================================================"<<endl;
    v.pop_back();//-------------------------pop_back()可以删除最后一个元素;
    cout << "after delete back element:" << endl;
    for(it=v.begin();it!=v.end();it++)
    {
        it->show();//---------------------结果为:aaa-------111
    }



    cout<<"3========================================================================"<<endl;

//访问元素//

    stu s3("ccc",333);v.push_back(s3);
    cout<" 最后一个元素:";
    v.back().show();//--------------------      ccc----------333

    cout<<"第一个元素:";
    v.front().show();//-------------------       aaa----------111


    cout<<"4========================================================================"<<endl;

    for(int i=0;i<v.size();i++)
    {
        v.at(i).show();//-------------此处输出为:aaa-------111和ccc--------333;
    //  v[i].show();       结果一样
    }


    cout<<"5========================================================================"<<endl;

    cout<<"第五个元素:"<<endl;
//  v[4].show();
//  v.at(4).show();//----------------会发生溢出

    cout<<"6========================================================================"<<endl;
    cout<<"第二个元素:"<<endl;
    v[1].show();//---------------------        ccc------333
    v.at(1).show();//--------------------      ccc------333

    cout<<"7========================================================================"<<endl;
// 插入//

    stu s4("ddd",444);
    stu s5("eee",555);

    it=v.begin();//利用迭代器,在容器最开始加上s4
    v.insert(it,s4);

    it=v.begin()+2;//在第三个位置加上s5
    v.insert(it,s5);

    for(int i=0;i<v.size();i++)
        v.at(i).show();//v[i].show();   ddd--------444
                                //      aaa--------111
                                //      eee--------555
                                //      ccc--------333



    cout<<"8========================================================================"<<endl;   
    it=v.end()-2;
    v.erase(it);//删除第三个数据


    for(int i=0;i<v.size();i++)
        v.at(i).show();//v[i].show();   ddd--------444
                                //      aaa--------111
                                //      ccc--------333




    cout<<"9========================================================================"<<endl;




    v.clear();// 清空数据;




    for(int i=0;i<v.size();i++)
        v.at(i).show();//v[i].show();    没有输出任何东西


    cout<<v.size()<<endl;//    0


猜你喜欢

转载自blog.csdn.net/it8343/article/details/80516164