C++中vector容器使用详细说明

yizhihongxing

C++中vector容器使用详细说明

1. 简介

vector是一个类似于动态数组的容器,能够存储任意类型的数据,提供了访问和遍历元素的方法。与数组不同的是,vector的大小可以动态变化,可以随时添加或删除元素。vector是标准模板库(STL)的一部分,因此可以与其他STL容器,例如list、map和set一起使用。

2. 基本使用

2.1 vector定义和初始化

在使用vector之前,需要包含头文件vector。

#include <vector>

vector的定义与数组类似,但需要使用模板类声明:

vector<type> vec;

其中type代表存储元素的数据类型,vec是vector对象的名称。

vector可以用以下方式进行初始化:

vector<type> vec;  // 空的vector
vector<type> vec(n);  // n个值初始化为类型type的默认值的vector
vector<type> vec(n, value);  // n个值初始化为value的vector
vector<type> vec1(vec2);  // 用vec2初始化vec1的元素

2.2 vector大小和容量

vector的大小是指存储在其中的元素个数,可以使用size()函数获取。容量是指vector在分配内存时可以容纳的元素个数的最大值,使用capacity()函数获取。在添加或删除元素时,vector会自动调整容量。

vector<type> vec;
int size = vec.size();  // 获取vector的大小
int capacity = vec.capacity();  // 获取vector容量

2.3 vector元素访问

元素可以使用下标或迭代器访问。下标从0开始,使用[]运算符。迭代器是指向vector中元素的指针,可以使用begin()和end()函数获取迭代器。

vector<type> vec;
// ...
type element = vec[index];  // 使用下标访问元素
type element = *(vec.begin() + index);  // 使用迭代器访问元素

2.4 vector元素操作

添加元素使用push_back()函数,删除元素使用erase()函数。back()函数可以获取最后一个元素的值。

vector<type> vec;
// ...
vec.push_back(value);  // 添加元素
type last_element = vec.back();  // 获取最后一个元素
vec.pop_back();  // 删除最后一个元素

2.5 vector迭代器

迭代器是使用STL遍历容器的常用方式。使用for循环迭代vector中的所有元素:

vector<type> vec;
// ...
for (auto it = vec.begin(); it != vec.end(); ++it) {
    // 使用*it访问当前元素
}

2.6 vector中的常用算法

vector可以使用STL中的算法,例如sort()排序、find()查找等等。

vector<type> vec;
// ...
sort(vec.begin(), vec.end());  // 对vector进行排序
auto it = find(vec.begin(), vec.end(), value);  // 查找元素

3. 示例

3.1 示例1:向vector中添加字符串并遍历

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main() {
    vector<string> vec;
    vec.push_back("hello");
    vec.push_back("world");
    vec.push_back("!");

    // 使用迭代器遍历vector
    for (auto it = vec.begin(); it != vec.end(); ++it) {
        cout << *it << " ";
    }
    cout << endl;

    return 0;
}

3.2 示例2:使用vector存储整型数组并求和

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<int> vec = {1, 2, 3, 4, 5};

    // 遍历vector并求和
    int sum = 0;
    for (auto it = vec.begin(); it != vec.end(); ++it) {
        sum += *it;
    }
    cout << "sum = " << sum << endl;

    return 0;
}

以上就是C++中vector容器的基础使用攻略,包含了vector的定义和初始化、大小和容量、元素访问、元素操作、迭代器和常用算法等内容。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++中vector容器使用详细说明 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • 开发 Internet Explorer 右键功能表(ContextMenu)

    开发 Internet Explorer 右键功能表(ContextMenu) 的完整攻略 Internet Explorer 是一款著名的浏览器,如何在 IE 中开发自定义的右键菜单呢?本文将介绍开发 Internet Explorer 右键功能表(ContextMenu) 的完整攻略。 准备工作 在开始开发之前,需要准备以下工作: 编写一个 JavaSc…

    other 2023年6月27日
    00
  • DOS的重定向命令使用方法以及在安全方面的应用

    DOS的重定向命令可以将命令的输出流重定向为一个文件,同时也可以将文件内容重定向成输入流。 一、使用方法 DOS中有两个常用的重定向符号: >:表示将命令的输出重定向为一个文件。如果该文件不存在,则新建文件;如果文件已经存在,则清空文件内容然后再写入内容。 >>:表示将命令的输出追加到一个文件末尾。如果该文件不存在,则新建文件。 在使用这些…

    other 2023年6月26日
    00
  • 加载gif动画的三种方式

    加载GIF动画的三种方式的完整攻略 GIF动画是一种常见的动画格式,可以用于网站、应用程序和其他数字媒体中。本文将介绍加载GIF动画的三种方式,包括使用HTML、CSS和JavaScript。在介绍每种方式时,将提供至少两个示例说明。 使用HTML加载GIF画 使用HTML加载GIF动画是最简单的方法之一。可以使用<img>标签来加载GIF动画。…

    other 2023年5月9日
    00
  • java获取系统路径字体、得到某个目录下的所有文件名、获取当前路径

    获取系统路径字体:在Java中,我们可以使用GraphicsEnvironment类来获取当前系统可用的字体名称,使用方法如下: import java.awt.*; public class FontNameDemo { public static void main(String[] args) { GraphicsEnvironment e = Gra…

    other 2023年6月26日
    00
  • ubuntu16.04里面安装electron-ssr 用来和浏览器交互

    以下是在Ubuntu 16.04上安装Electron-SSR并与浏览器交互的完整攻略,包括基本知识和两个示例。 基本知识 Electron-SSR是一个基于Electron的跨平台代理客户端,它可以帮助用户在浏览器中访问被封锁的网站。在Ubuntu 16.04上安装Electron-SSR并与浏览器交互,需要以下步骤: 安装Electron-SSR 启动E…

    other 2023年5月7日
    00
  • recyclerview禁止滑动

    当你想要在Android应用程序中禁止RecyclerView滑动时,你可以使用以下方法来实现。下面是recyclerview禁止滑动的完整攻略: 在XML布局文件中添加RecyclerView 在XML布局文件中,你需要添加一个RecyclerView。下面是一个示例: xml <androidx.recyclerview.widget.Recycl…

    other 2023年5月8日
    00
  • Win10修改文件后缀名(扩展名)来解决一些小问题

    Win10修改文件后缀名(扩展名)来解决一些小问题攻略 有时候,我们可能会遇到一些小问题,例如无法打开特定类型的文件或者文件无法正确识别。在这种情况下,修改文件的后缀名(也称为扩展名)可能是解决问题的一种简单方法。下面是Win10修改文件后缀名的完整攻略,包括两个示例说明。 步骤1:显示文件扩展名 在开始修改文件后缀名之前,我们需要确保Windows 10显…

    other 2023年8月5日
    00
  • 解决360加密邮用户名密码验证失败的教程

    解决360加密邮用户名密码验证失败教程 问题现象 在使用360加密邮的过程中,部分用户反映出现了无法验证用户名和密码的问题。具体表现为输入正确的用户名和密码,但是仍提示验证失败,无法正常登陆。 原因分析 经过调查,发现该问题通常由以下原因引起: 360加密邮的验证服务出现故障或维护; 用户名或密码输入错误,导致验证失败; 浏览器缓存或Cookie问题。 解决…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部