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

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日

相关文章

  • minikube addons enable ingress 启动错误

    下面是关于启动minikube addons enable ingress时出现错误的完整攻略,包括错误原因、解决方法和两个示例说明。 错误原因 在启动minikube addons enable ingress时,可能会出现以下错误: Error enabling addons ingress: Error enabling addon ingress: …

    other 2023年5月6日
    00
  • mysqlbinlogflashback5.6完全使用手册与原理

    mysqlbinlogflashback5.6完全使用手册与原理 简介 mysqlbinlogflashback 是一个基于 python 实现的用于回滚数据的命令行工具。在使用 mysql 数据库进行开发的过程中,由于不可避免地会出现误操作、数据错误等问题,需要进行数据回滚。mysqlbinlogflashback 能够根据 mysql 的 binlog …

    其他 2023年3月28日
    00
  • golang执行exec命令

    当然,我可以为您提供详细的“golang执行exec命令”的完整攻略,包括两个示例说明。 golang执行exec命令的完整攻略 在Go语言中,我们可以使用os/exec包来执行外部命令。os/exec包提供了一个Cmd类型,用于表示一个正在准备执行的命令。我们可以使用Cmd类型的方法来设置命令的参数、环境变量、输入输出等选项,然后使用Run()方法来执行命…

    other 2023年5月7日
    00
  • JavaScript中var let const的用法有哪些区别

    JavaScript中var let const的用法区别 在JavaScript中,var、let和const是用于声明变量的关键字。它们之间有一些区别,下面将详细讲解它们的用法和区别。 var var是在ES5中引入的关键字,用于声明变量。它有以下特点: 函数作用域:var声明的变量具有函数作用域,意味着它们在声明的函数内部可见,而在函数外部不可见。 变…

    other 2023年8月21日
    00
  • ubuntu查看mysql版本

    以下是“Ubuntu查看MySQL版本的完整攻略”的标准markdown格式文本,其中包含了两个示例: Ubuntu查看MySQL版本的完整攻略 在Ubuntu系统中,我们可以通过命令行来查看MySQL的版本号。以下是查看MySQL版本号的步骤: 1. 登录MySQL 在命令行中输入以下命令并按下回车键,输入MySQL的root用户密码以登录MySQL: m…

    other 2023年5月10日
    00
  • C语言动态开辟内存详解

    C语言动态开辟内存详解 在C语言中,动态开辟内存是一种在程序运行时根据需要分配和释放内存的方法。这种方法允许我们在编写程序时动态地管理内存,以适应不同的需求。本文将详细介绍C语言中动态开辟内存的过程和示例。 1. 使用malloc函数动态分配内存 malloc函数是C语言中用于动态分配内存的函数。它的原型如下: void* malloc(size_t siz…

    other 2023年8月1日
    00
  • C++的static关键字及变量存储位置总结

    C++的static关键字及变量存储位置总结 在C++中,static关键字用于声明静态变量和静态成员函数。它可以改变变量的存储位置和生命周期。下面是对static关键字及变量存储位置的详细总结。 静态变量的存储位置 静态变量在程序的整个生命周期内都存在,并且存储在静态存储区。静态存储区是在程序启动时分配的一块固定大小的内存区域,直到程序结束时才会释放。静态…

    other 2023年7月29日
    00
  • 安卓7.0开发者预览版2出现各种bug汇总

    安卓7.0开发者预览版2出现各种bug汇总 问题描述 在安卓7.0开发者预览版2中,出现了各种各样的bug,这些bug给开发者带来了诸多困扰。本文主要汇总了这些bug,并提供相应的解决方案,以方便开发者更好地进行开发。 bug汇总 无法使用Google账号登录 在安装完安卓7.0开发者预览版2后,有部分用户反馈无法使用Google账号进行登录。此时,建议尝试…

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