玩命加载中 . . .

STL-vector


vector动态数组

初始化

  1. 初始化列表
  2. n个相同的元素
  3. 复制另一个vector初始化
  4. 复制另一个vector的一部分初始化

代码示例

int main(int argc, char const *argv[])
{
    vector<int> vi = {20, 30};
    vi.push_back(45);
    vi.push_back(67);
    for (auto& v : vi) {
        cout << v << " ";
    }
    cout << endl;
    
    vector<int> vec1(5, 23);
    for (auto& v : vec1) {
        cout << v << " ";
    }
    cout << endl;

    vector<int> vec2(vec1);
    for (auto& v : vec2) {
        cout << v << " ";
    }
    cout << endl;

    vector<int> vec3(vec1.begin(), vec1.begin() + 3);
    for (auto& v : vec3) {
        cout << v << " ";
    }
    cout << endl;
    return 0;
}
20 30 45 67
23 23 23 23 23 
23 23 23 23 23 
23 23 23 

查找元素

auto it = find(vi.begin(), vi.end(), 67);

插入元素

  1. 在某个位置插入一个元素
  2. 在某个位置插入n个相同的元素
  3. 在某个位置插入另一个vector的元素

代码示例

int main(int argc, char const *argv[])
{
    vector<int> vi = {20, 30};
    vi.push_back(45);
    vi.push_back(67);
    vi.insert(vi.begin(), 123);
    vi.insert(vi.end(), 2, 89);
    vector<int> temp(3, 100);
    vi.insert(vi.begin() + 1, temp.begin(), temp.end());
    return 0;
}
20 30 45 67 
123 20 30 45 67     // 在头部插入一个元素
123 20 30 45 67 89 89   // 在尾部插入2个相同的元素
123 100 100 100 20 30 45 67 89 89   // 在第一个元素位置插入一个vector

迭代器

begin()
end()
cbegin()
cend()

访问元素

  1. 迭代器
  2. 下标运算符[]
  3. 成员函数at()
int main() {
    vector<int> vi;
    vi.push_back(45);
    vi.push_back(67);
    cout << *vi.cbegin() << endl;

    auto it = find(vi.begin(), vi.end(), 67);
    if (it != vi.end()) {
        int index = distance(vi.begin(), it);
        cout << *it << endl;
        cout << index;
    }
}

删除元素

pop_back()

大小和容量

size(): 返回vector大小
capacity(): 返回vector容量,容量不够时会自动重新分配

文章作者: kunpeng
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kunpeng !
  目录