c++进阶STL::vector容器常用语法

#include
#include

using namespace std;

/*vector类 #include*/
// <---------- 单向操作
//vector初始化
void test1()
{
    vector v1;
    for (int i = 0; i < 5; i++)
    {
        v1.push_back(i);
    }

    vector v2(v1);

    vector v3(v2.begin(), v2.end());

    for (vector::iterator it = v3.begin(); it != v3.end(); it++)
    {
        cout << *it << endl;
    }

    char a[] = {'q', 'w', 'e', 'r'};
    vector v4(a, a+4);
    for (vector::iterator ite = v4.begin(); ite != v4.end(); ite++)
    {
        cout << (char)*ite << endl;
    }

    vector v5(10,'a');
    for (vector::iterator it5 = v5.begin(); it5 != v5.end(); it5++)
    {
        cout << (char)*it5 << " ";
    }
}
//vector容器基本操作:增加
void test2()
{
    vector v(10,'A');
    v.push_back('B');  //向容器v尾部插入一个‘B’
    for (vector::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;

    v.insert(v.begin(), 'C');    //向容器v.begin()位置插入C
    for (vector::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;

    v.insert(v.begin(), 5,  'D');    //向容器v.begin()位置插入5个D
    for (vector::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;

    vector v2(5,'f');
    for (vector::iterator it = v.begin(); it != v.end(); it++)
    {
        if (*it == 'C')
        {
            v.insert(it, v2.begin(), v2.end());        //插入数据是在该位置的前面插入
            break;
        }
    }
    for (vector::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    }

    cout << endl;
}

//vector删除数据
void test3()
{
    vector v(5, 'A');
    v.push_back('B');  //向容器v尾部插入一个‘B’
    v.push_back('c'); 
    v.push_back('d');  
    v.push_back('E');  
    v.push_back('F');  
    v.push_back('h');
    v.push_back('i');
    v.push_back('G');

    cout << "原始数据:";
    for (vector::iterator it = v.begin(); it != v.end(); it++)
    {
        cout <<*it << " ";
    }
    cout << endl;

    cout << "删除指点位置的元素c:";
    for (vector::iterator it = v.begin(); it != v.end(); it++)
    {
        if (*it == 'c')
        {
            v.erase(it);    //删除指点位置的元素
            break;
        }
    }
    for (vector::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;

    cout << "删除指点区间的元素:";
    vector::iterator myBegin, myEnd;
    for (vector::iterator it = v.begin(); it != v.end(); it++)
    {
        if (*it == 'B')
        {
            myBegin = it;    
        }
        else if (*it == 'E')
        {
            myEnd = it;
            v.erase(myBegin, myEnd);    //删除指点区间的元素,begin会被删除,end不会被删除
            break;
        }
    }
    for (vector::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;

    v.pop_back();    //删除最后一个元素
    cout << "删除最后一个元素:";
    for (vector::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;

    v.clear();    //清空容器v
    if (v.empty())    //判定是否容器v是否为空
    {
        cout << "v容器为空" << endl;
    }
    else
    {
        cout << "v容器不为空" << endl;
    }
}

//vector查找遍历
void test4()
{
    vector v;
    v.push_back('B');  //向容器v尾部插入一个‘B’
    v.push_back('c');
    v.push_back('d');
    v.push_back('E');
    v.push_back('F');
    v.push_back('h');
    v.push_back('i');
    v.push_back('G');

    cout << "原始数据:";
    for (vector::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;
     
    cout << "查找位置2:" << v.at(2) << endl;    //查找指定位置元素
    cout << "首元素:" << v.front() << endl;    //查找首元素
    cout << "尾元素:" << v.back() << endl;        //查找尾元素
    //上面三个函数返回都是引用

    v.begin();    //第一个元素迭代器
    v.end();    //最后一个元素迭代器
    v.rbegin(); //返回最后一个元素迭代器,反向迭代器
    v.rend();    //返回第一个元素迭代器,反向迭代器
}

 

//vector容器大小
void test5()
{
    vector v;
    v.push_back('B');  //向容器v尾部插入一个‘B’
    v.push_back('c');
    v.push_back('d');
    v.push_back('E');
    v.push_back('F');
    v.push_back('h');
    v.push_back('i');
    v.push_back('G');
    sort(v.begin(), v.end());
    for (vector::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it;
    }
    cout << endl;
    cout << v.size() << endl;    //返回容器中元素的个数
    cout << v.capacity() << endl;    //返回当前容器中能容纳的最大元素值(已经分配空间)
    cout << v.max_size() << endl;    //返回最大可允许的元素数量(即可以分配空间存放的元素数量)

    vector v1(10, 'a');
    cout << "交换之前v:";
    for (vector::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it;
    }
    cout << endl;

    cout << "交换之前v1:";
    for (vector::iterator it = v1.begin(); it != v1.end(); it++)
    {
        cout << *it;
    }
    cout << endl;

    v.swap(v1);    //交换容器v和V1的值
    cout << "交换之后v:";
    for (vector::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it;
    }
    cout << endl;

    cout << "交换之后v1:";
    for (vector::iterator it = v1.begin(); it != v1.end(); it++)
    {
        cout << *it;
    }
    cout << endl;

    v1.assign(5,'B');    //设置v1中5个元素为B
    cout << "设置v1中5个元素为B:";
    for (vector::iterator it = v1.begin(); it != v1.end(); it++)
    {
        cout << *it ;
    }
    cout << endl;
    v1.assign(6, 'c');    //设置v1中5个元素为B

    v.assign(v1.begin(), v1.end());
    for (vector::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it;
    }
    cout << endl;


}

int main()
{
    //test1();
    //test2();
    //test3();
    //test4();

test5();

return 0;
}

你可能感兴趣的:(c++)