「 C++ STL库入门实例」vector.cpp

(1)vector

#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
//vector容器构造
void printVector(vector<int>& v)
{
    for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;
}
void test01()
{
    vector<int>v1;
    //默认构造 无参构造
    for (int i = 10; i > 1; i--)
    {
        v1.push_back(i);
    }
    cout << "输出v1" << endl;
    printVector(v1);

    //通过区间方式进行构造
    vector<int>v2(v1.begin(), v1.end());
    printVector(v2);

    //n个elem方式构造
    vector<int>v3(10, 100);
    printVector(v3);

    //拷贝构造
    vector<int>v4(v3);
    printVector(v4);
    sort(v1.begin(), v1.end());
    cout << "v1排序后:" << endl;
    printVector(v1);
}
void test02()
{
    //vector赋值
    vector<int>v5;
    for (int i = 0; i < 10; i++)
    {
        v5.push_back(i);
    }
    printVector(v5);
    //等号赋值
    vector<int>v6;
    v6 = v5;
    printVector(v6);

    //assign
    vector<int>v7;
    v7.assign(v5.begin(), v5.end());
    printVector(v7);

    //几个elem 方式赋值
    vector<int>v8;
    v8.assign(10, 100);
    printVector(v8);

}
void test03()
{
    vector<int>v9;
    for (int i = 0; i < 10; i++)
    {
        v9.push_back(i);
    }
    if (v9.empty())
    {
        cout << "v9为空" << endl;
    }
    else
    {
        cout << "v9不为空" << endl;
        printVector(v9);
        cout << "v9的容量为" << v9.capacity()<<endl;
        cout << "v9的大小为" << v9.size() << endl;
    }

    //重新指定大小
    v9.resize(15,100);
    printVector(v9);
    v9.resize(18);
    printVector(v9);

    v9.resize(5);
    printVector(v9);
}
void test04()
{
    vector<int>v10;
    //尾插法
    v10.push_back(10);
    v10.push_back(20);
    v10.push_back(30);
    v10.push_back(40);
    v10.push_back(50);
    printVector(v10);

    //尾删法
    v10.pop_back();
    printVector(v10);

    //插入
    v10.insert(v10.begin(), 2,100);
    printVector(v10);

    //删除
    v10.erase(v10.begin());
    printVector(v10);
    //清空
    v10.clear();
    //v10.erase(v10.begin(),v10.end());
    printVector(v10);


}
void test05()
{
    vector<int>v11;
    for (int i = 0; i < 10; i++)
    {
        v11.push_back(i);
    }
    //利用[]方式访问数组元素
    for (int j = 0; j < v11.size(); j++)
    {
        cout << v11[j] << " ";

    }
    cout << endl;

    //利用at方式访问元素

    for (int i = 0; i < v11.size(); i++)
    {
        cout << v11.at(i) << " ";
    }
    cout << endl;

    //获取第一个元素
    cout << "第一个元素为:" << v11.front() << endl;

    //获取最后一个元素
    cout << "最后一个元素为:" << v11.back() << endl;
}

void test06()
{
    //vector容器互换
    cout << "交换前" << endl;
    vector<int>v12;
    for (int i = 0; i < 10; i++)
    {
        v12.push_back(i);
    }
    printVector(v12);
    vector<int>v13;
    for (int i = 10; i >= 1; i--)
    {
        v13.push_back(i);
    }
    printVector(v13);
    cout << "交换后" << endl;
    v12.swap(v13);
    printVector(v12);
    printVector(v13);
}
void test07()
{
    vector<int>v14;
    for (int i = 0; i < 100000; i++)
    {
        v14.push_back(i);
    }
    cout << "v14的容量为" << v14.capacity() << endl;
    cout << "v14的大小为" << v14.size() << endl;

    v14.resize(3);//容量不会变
    cout << "v14的容量为" << v14.capacity() << endl;
    cout << "v14的大小为" << v14.size() << endl;
    cout << endl;
    //巧用swap收缩内存
    vector<int>(v14).swap(v14);
    cout << "v14的容量为" << v14.capacity() << endl;
    cout << "v14的大小为" << v14.size() << endl;
}
void test08()
{
    //vector容器 预留空间
    vector <int>v15;
    v15.reserve(100000);//利用reserve预留空间
    int num = 0;//统计开辟次数
    int* p = NULL;
    for (int i = 0; i < 100000; i++)
    {
        v15.push_back(i);
        if (p != &v15[0])
        {
            p = &v15[0];
            num++;
        }
    }
    cout << num<<"次";

}
int main()
{
    test01();
    /*test02();
    test03();
    test04();
    test05();
    test06();
    test07();
    test08();*/
    system("pause");
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值