• vector 学习笔记


    vector 使用练习:

    /****************************************
    * File Name: vector.cpp
    * Author: sky0917
    * Created Time: 2014年04月27日 11:07:33
    ****************************************/
    #include <iostream>
    #include <vector>
    using namespace std;
    
    int main(){
        // vector 的申明
        vector<int>v1;          //定义空的vector
        vector<int>v2(10);        //定义大小为10 的vector
        vector<int>v3(10, -1);  //产生大小为10,并且每个元素都是-1的vector
        vector<int>v4(v3);      //用一个vector产生一个vector
        
        int arr[5] = {1, 2, 3, 4, 5};
        vector<int>v5(arr, &arr[5]);  // 以区间[begin,end)作为初值的vector
        
        cout<<"v5元素个数"<<v5.size()<<endl;
        cout<<"v1是否为空:"<<(v1.empty()?"":"非空")<<endl;
        cout<<"v1可容纳的最大元素数量"<<v1.max_size()<<endl; //和电脑内存有关
        cout<<"v2重新分配前所能容纳的最大元素数量:"<<v2.capacity()<<endl; 
        
        v2.reserve(20);  //给v2 重新分配20个空间    
        cout<<"v2分配后所能容纳的最大元素数量:"<<v2.capacity()<<endl; 
        
        cout<<"v3 v4 是否相等:"<<(v3==v4?"相等":"不等")<<endl;
    
        v1.push_back(1);  // 在v1 尾部添加一个元素 1
        v1.push_back(2);
        v1.push_back(3);
    
        /*
         *  迭代器是随机存取迭代器,对vector来说是指针,迭代器持续有效
         *  除非在一个较小索引位置插入、删除元素或者内存重新分配
         */
        vector<int>::iterator it;
        int i = 0;
        for (it = v1.begin(); it != v1.end(); i++, it++){
            cout<<"v1["<<i<<"]="<<v1[i]<<endl;
        }
        
        v1.pop_back();  // 在v1的尾部删除一个元素    
        for (it = v1.begin(),i = 0; it != v1.end(); i++, it++){
            cout<<"v1["<<i<<"]="<<*it<<endl;
        }
            
        v2 = v1; //将v1 的元素全部拷到v2
        for (it = v2.begin(), i=0; it != v2.end(); i++, it++){
            cout<<"v2["<<i<<"]="<<v2[i]<<endl;
        }
        cout<<"v2 的元素个数"<<v2.size()<<endl;
        v2.clear();   // 将 v2 清空
        cout<<"v2 的元素个数"<<v2.size()<<endl;
        
        v2 = v1; //重新赋值
        v2.assign(3, 55); // 给 v2 重新初始化为包含三个元素55的向量
        for (it = v2.begin(), i=0; it != v2.end(); i++, it++){
            cout<<"v2["<<i<<"]="<<v2[i]<<endl;
        }
        v2.assign(arr, &arr[4]);
        for (it = v2.begin(), i=0; it != v2.end(); i++, it++){
            cout<<"v2["<<i<<"]="<<v2[i]<<endl;
        }
        
        v1.swap(v2);  // v1和v2 元素交换
        // swap(v1, v2);
        for (it = v1.begin(), i=0; it != v1.end(); i++, it++){
            cout<<"v1["<<i<<"]="<<v1[i]<<endl;
        }
            
        //cout << "v1下标为4的元素" << v1.at(4)<<endl; // 越界抛出异常
        cout << "v1下标为5的元素" << v1[5]<<endl;      // 越界,不检查
        cout << "v1的首个元素:" << v1.front()<<endl;  // v1的首个元素
        cout << "v1的最后元素:" << v1.back()<<endl;   // v1 的最后的元素
            
        vector<int>::iterator pos = v1.begin();
        v1.insert(pos, 12);  // 在pos 位置之前插入一个元素12
        v1.insert(pos, 13);  // 在pos 位置之前插入一个元素12
        //v1.insert(pos, 4, 55); // 在pos 位置之前插入 4 个 元素 55
        for (it = v1.begin(), i=0; it != v1.end(); i++, it++){
            cout<<"v1["<<i<<"]="<<v1[i]<<endl;
        }
        v1.erase(pos);  // 将 pos 位置的元素删除
        for (it = v1.begin(), i=0; it != v1.end(); i++, it++){
            cout<<"v1["<<i<<"]="<<v1[i]<<endl;
        }
        v1.erase(pos, pos+3);   // 从pos 位置开始连续删除 3 个元素
        for (it = v1.begin(), i=0; it != v1.end(); i++, it++){
            cout<<"v1["<<i<<"]="<<v1[i]<<endl;
        }
        
        // v1.resize(5); // 将元素数量改成5,如果v1变大,则多的按默认来
           v1.resize(5, 9); //将元素数量改成5,如果v1变大,则多的赋值为9
        for (it = v1.begin(), i=0; it != v1.end(); i++, it++){
            cout<<"v1["<<i<<"]="<<v1[i]<<endl;
        }
        v1.clear();  //清空v1    
        return 0;
    }
  • 相关阅读:
    浏览器操作本地缓存记录一下
    dotnet new Getting ready... Object reference not set to an instance of an object.
    IIS上vue打包后接口跨域解决
    SpringBoot前言
    Node聊天室和socket.io原理与功能总结
    Node加解密原理和功能探索总结
    Node中文件断点续传原理和方法总结
    Node短链原理与功能实现总结
    Node中F2A原理及功能实现总结
    Node图形邮箱手机验证码实现方法总结
  • 原文地址:https://www.cnblogs.com/sky0917/p/3694066.html
Copyright © 2020-2023  润新知