STL之vector

  • vector的构造:

#include<iostream>
using namespace std;
#include<vector>

void printfvector(vector<int>& v)
{
    for (vector<int>::iterator it = v.begin(); it !=v.end(); it++)
    {
        cout << *it  <<" " ;

    }
    cout << endl;
}

int main(void)
{
    vector<int> v1;//默认构造 无参构造

    for (int i = 0; i < 10; i++)
    {
        v1.push_back(i);
    }

    printfvector(v1);


    //通过区间构造函数
    vector<int>v2(v1.begin(), v1.end());
    printfvector(v2);


    //用n个elem来构造函数
    vector<int>v3(10, 100);
    printfvector(v3);

    //拷贝构造
    vector<int>v4(v3);
    printfvector(v4);
}
  •  vector的赋值:

#include<iostream>
using namespace std;
#include<vector>

void printfvector(vector<int>& v)
{
    for (vector<int>::iterator it = v.begin(); it !=v.end(); it++)
    {
        cout << *it  <<" " ;

    }
    cout << endl;
}

int main(void)
{
    vector<int> v1;//默认构造 无参构造

    for (int i = 0; i < 10; i++)
    {
        v1.push_back(i);
    }

    printfvector(v1);
    
    //赋值操作  operator =
    vector<int>v2;
    v2 = v1;
    printfvector(v2);


    //assign的方式
    vector<int>v3;
    v3.assign(v1.begin(), v1.end());
    printfvector(v3);

    //n个elem的方式
    vector<int>v4;
    v4.assign(10, 100);
    printfvector(v4);
}
  •  vector的容量和大小
#include<iostream>
using namespace std;
#include<vector>

void printvector(vector<int>v)
{
    for (vector<int>::iterator i = v.begin(); i < v.end(); i++)
    {
        cout << *i << " ";
    }
    cout << endl;
}


int main(void)
{
    vector<int>v1;
    for (int i = 0; i < 10; i++)
    {
        v1.push_back(i);
    }
    printvector(v1);


    if (v1.empty())//是否为空
        cout << "v1是空的" << endl;
    else
    {
        cout << "v1不是空的" << endl;
        cout << "v1的容量是" << v1.capacity() << endl;
        cout << "v1的大小是" << v1.size() << endl;
    }
    

    //resize重新指定大小,若指定的更大,默认用0填充新位置,可以用重载版本替换默认填充
    v1.resize(15,100);
    printvector(v1);
    v1.resize(5);//若指定更小的,超出部分元素会被删除
    printvector(v1);
}
  • vector的插入、删除

#include<iostream>
using namespace std;
#include<vector>

void printvector(vector<int>v)
{
    for (vector<int>::iterator i = v.begin(); i < v.end(); i++)
    {
        cout << *i << " ";
    }
    cout << endl;
}


int main(void)
{
    vector<int>v1;
    for (int i = 0; i < 10; i++)
    {
        v1.push_back(i);
    }
    printvector(v1);
    
    //尾插法
    v1.push_back(20);
    printvector(v1);

    //尾删法
    v1.pop_back();

    //插入方法
    v1.insert(v1.begin(), 1);
    printvector(v1);
    v1.insert(v1.begin(), 2, 100);
    printvector(v1);

    //删除方法
    v1.erase(v1.begin());
    printvector(v1);
    //v1.erase(v1.begin(), v1.end());
    //在[      )区间,相当于清空

    //另一个清空函数
    v1.clear();
    printvector(v1);
}
  •  vector的数据存取
#include<iostream>
using namespace std;
#include<vector>

void printvector(vector<int>v)
{
    for (vector<int>::iterator i = v.begin(); i < v.end(); i++)
    {
        cout << *i << " ";
    }
    cout << endl;
}


int main(void)
{
    vector<int>v1;
    for (int i = 0; i < 10; i++)
    {
        v1.push_back(i);
    }
    
    //数据存取
    //1.利用[]来访问
    for (int i = 0; i < v1.size(); i++)
    {
        cout << v1[i] << " ";
    }
    cout << endl;
    //2.利用at来访问
    for (int j = 0; j < v1.size(); j++)
    {
        cout << v1.at(j) << " ";
    }
    cout << endl;

    //访问第一个数据
    cout << "第一个数据是:" << v1.front() << endl;
    //访问最后一个数据
    cout << "最后一个数据是:" << v1.back() << endl;

}
  • vector的交换
#include<iostream>
using namespace std;
#include<vector>

void printvector(vector<int>&v)
{
    for (vector<int>::iterator i = v.begin(); i < v.end(); i++)
    {
        cout << *i << " ";
    }
    cout << endl;
}


int main(void)
{
    vector<int>v1;
    for (int i = 0; i < 10; i++)
    {
        v1.push_back(i);
    }
    
    vector<int>v2;
    for (int i = 10; i>0; i--)
    {
        v2.push_back(i);
    }
    printvector(v1);
    printvector(v2);

    //交换两个容器
    v1.swap(v2);
    printvector(v1);
    printvector(v2);
}

 

posted @ 2020-12-16 20:42  loliconsk  阅读(42)  评论(0)    收藏  举报