STL容器:vector

基础

尾部开口,因此在其尾部进行数据的输入输出操作效率最高。
尾部输入成员函数push_back(),尾部删除成员函数pop_back()
常用构造函数见如下程序:

int _tmain(int argc, _TCHAR* argv[])
{
    vector<int> v1;//构造一个空的容器
    for (int i = 0; i < 20; i++)
    {
        v1.push_back(i);
        //vector如何实现内存的动态增长,会预先创建一块内存区,当用完后再重新申请
        cout << "v1.size():" << v1.size() << "  v1.capacity()" << v1.capacity()<//size()元素的个数,capacity() vector的总长度,包括没被初始化的元素
    }
    vector<int> v2(10);//构造一个长度为10的容器
    vector<int> v3(10,2);//构造一个长度为10的容器,并用2初始化它
    vector<int> v4(v1);//构造一个容器v4,并用v1初始化它
    vector<int> v5(v1.begin()+1, v1.begin()+11);//构造一个容器v5并用v1的部分元素初始化它
    return 0;
}

数据的访问

int _tmain(int argc, _TCHAR* argv[])
{
    vector<int> v1;
    for (int i = 0; i < 5; i++)
    {
        v1.push_back(i);
    }
    cout << "使用下标和at()读取数据" << endl;
    for (int i = 0; i < v1.size(); i++)
    {
        cout << v1[i] << " " << v1.at(i)<cout << "使用下标和at()来写入数据" << endl;
    v1[0] = 10; v1.at(1) = 11;
    for (int i = 0; i < v1.size(); i++)
    {
        cout << v1[i] << " " << v1.at(i) << endl;
    }
    //使用迭代器来插入数据
    vector<int>::iterator iter;
    iter = v1.begin();
    v1.insert(iter + 1, 0);
    cout << "使用迭代器来遍历输出数据" << endl;
    for (iter = v1.begin(); iter!= v1.end(); iter++)
    {
        cout << *iter << endl;
    }
    return 0;
}

其它的常用函数:
clear() 删除容器中所有元素
erase(pos) 删除pos指定位置的元素
erase(begin,end) 删除begin到end-1间的所有元素
insert(pos,elem) 在pos处插入elem,并返回新元素的位置
insert(pos,n,elem) 在pos处插入n个elem
insert(pos,begin,end) 把begin到end-1的所有元素拷贝到pos处
resize(n) 将元素个数改为n
resize(n,elem) 将元素个数改为n,如果size增加,把增加的都初始化为elem

c++11为vertor增加的新内容:
使用{}来初始化和赋值
简单地使用for来遍历元素并进行简单操作

int _tmain(int argc, _TCHAR* argv[])
{
    vector<int> v1= {1,2,3,4,5};
    for (auto &i : v1){
        i = i*i;
    }
    for (auto &i : v1){
        cout << i << endl;
    }
    return 0;
}

你可能感兴趣的:(学习笔记,STL)