• C++的vector对象


    C++的vector使用

    标签(空格分隔): C++


    标准库类型vector表示对象的集合,其中所有对象的类型都相同。集合中的每个对象都有一个与之对应的索引,索引用于访问对象,因为vector容纳着其他的对象,所以也称之为容器

    要使用vector需要先包含对应的头文件:

    #include <vector>
    

    vector也是一个类模板,所以要声明vector对象时和其他的模板一样:

    vector<int> iVec;               // iVec保存int类型的对象
    vecotr<vector<string>> sVec;    // sVec保存vector对象
    

    定义和初始化vector对象

    vector<T> vec;                      // vec是一个空的vector,他能接受的类型为T,执行默认初始化
    vector<T> vec2(vec);                // vec2中包含vec所有元素的副本
    vector<T> vec2 = vec;               // 等价于vec2(vec);
    vector<T> vec(n, val);              // vec包含了n个重复的元素,每个元素的值都是val
    vector<T> vec2(n);                  // vec2包含n个重复的执行了T的初始化的对象
    vector<T> vec{a, b, c};             // vec包含了a, b, c
    vector<T> vec = {a, b, c};          // 等价于vec{a, b, c}
    

    这里要注意vec(n)vec{n}的区别:

    vector<int> vec(10);                // vec有10个元素,每个值都是0
    vecotr<int> vec{10};                // vec有1个元素,该元素的值是10
    

    向vector对象中添加元素

    push_back()负责把一个值当成vector对象的尾元素压倒对象的最后。例如:

    vector<int> vec;
    for (int i = 0; i != 100; i++) {
        vec.push_back(i);
    }               // 循环结束后vec中100个元素,值从0到99
    

    然而在通过循环向vector中添加元素的时候,最好不要使用for...in...循环,因为添加使得vec.end()失效,使用for...in...循环不能正常工作。

    访问vector中的元素

    既然vector是一个集合容器,那我们就可以通过便利的方式去一个一个的访问元素:

    vector<int> vec{1, 2, 3, 4, 5, 6};
    for (auto &i:vect) {
        i *= i;
    }                       // 将vec中的每个元素平方
    int sum = 0;
    for (auto i:vec) {
        sum += i;
    }                       // 计算vec元素之和
    

    当然也可以使用下标去访问对象:

    for (decltype(v.size()) i = 0, size = v.size(); i != size; i++) {
        v.push_back(v[i]);
    }                       // 通过循环把vec的元素拷贝一份到原来的元素后面。
    

    其他vector操作

    除了添加元素用的push_back()之外,vector还提供了几种其他操作,大多都和string的相关操作类似。

    vec.empty();
    vec.size();
    vec.push_back(t);
    vec[n];
    vec1 = vec2;
    vec = {a, b, c};
    vec1 == vec2;                   // vec1和vec2相等当且仅当他们的元素数量相同且对应位置的元素都相同
    vec1 != | < | <= | > | >= vec2;
    
  • 相关阅读:
    HTML th nowrap 属性
    C 语言实例 – 判断闰年
    Java MySQL 连接
    Linux shapecfg命令
    C 简介
    Java 之 HashSet 集合
    Java 之 Set 接口
    Java 之 LinkedList 集合
    Java 之 List 接口
    JavaScript 之 事件(详解)
  • 原文地址:https://www.cnblogs.com/tingyugetc/p/5925919.html
Copyright © 2020-2023  润新知