STL学习01:vector代码片段

#include <iostream>
#include <vector>
#include <algorithm>

bool sort1(const int a, const int b)
{
    return a < b;
}

bool sort2(const int a, const int b)
{
    return a > b;
}


int main()
{
    // 声明
    std::vector<int> vec_int;

    // 初始化 && 遍历
    vec_int.resize(5);
    for(auto it = vec_int.begin(); it != vec_int.end(); it++) {
        std::cout << "it member: " << *it << std::endl;
    }

    for(int i = 0; i < vec_int.size(); i++) {
        std::cout << "it member: " << vec_int[i] << std::endl;
    }

    std::cout << "###############################\n";

    vec_int.resize(5, 10);      // 初始化5个元素,每个元素值为10
    for(int i = 0; i < vec_int.size(); i++) {
        std::cout << "member: " << vec_int[i] << std::endl;
    }

    // 初始化列表方法
    std::vector<int> vec_test02{1,2,3,4,5};
    for(int i = 0; i < vec_test02.size(); i++){
        std::cout << "vec " << i << "  member: " << vec_test02[i] << std::endl;
    }

    // 用另一个向量初始化
    std::vector<int> copy_vector(vec_test02);
    for(int i = 0; i < copy_vector.size(); i++){
        std::cout << "vec copy " << i << "  member: " << copy_vector[i] << std::endl;
    }

    std::cout << "###############################\n";

    // 使用数组指针初始化
    int arr[10] = {1,2,3,4,5};
    std::vector<int> arr_vector(arr, arr + 10);

    for(int i = 0; i < arr_vector.size(); i++){
        std::cout << "arr vec copy " << i << "  member: " << arr_vector[i] << std::endl;
    }


    // 二维数组定义方式
    std::vector<std::vector<int>> vec_dim2(10, std::vector<int>(5));    // 10 行 5 列
    for(int i = 0; i < vec_dim2.size(); i++) {
        for(int j = 0; j < vec_dim2[0].size(); j++) {
            std::cout << "i: " << i << "  j: " << j << std::endl;
        }
    }

    std::cout << "###############################\n";
    // 元素添加到末尾
    std::vector<int> ttest03{1,2,3};

    std::cout << "before pop: \n";
    for(auto item: ttest03){
        std::cout << item << std::endl;
    }

    ttest03.push_back(10086);

    std::cout << "after insert: \n";
    for(auto item: ttest03){
        std::cout << item << std::endl;
    }

    std::cout << "after pop: \n";
    ttest03.pop_back();     // 从末尾删除元素
    for(auto item: ttest03){
        std::cout << item << std::endl;
    }

    // 删除指定位置元素
    auto it = ttest03.begin();
    it += 1;        // 删除索引为1位置的元素
    ttest03.erase(it);

    std::cout << "after erase: \n";
    for(auto item: ttest03){
        std::cout << item << std::endl;
    }

    std::cout << "###############################\n";
    
    // 元素排序
    std::vector<int> vec_to_sort{2,4,1,6,7,2,9,0};
    std::sort(vec_to_sort.begin(), vec_to_sort.end(), sort1);

    for(auto &item: vec_to_sort) {
        std::cout << item << " "; 
    }
    std::cout << std::endl;

    std::cout << "stl test finished. \n";
    return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值