【C++】vector容器用法 —— 5
发布日期:2021-05-15 02:51:59 浏览次数:21 分类:精选文章

本文共 2895 字,大约阅读时间需要 9 分钟。

C++向量(vector)详解

1. 参考资料

本文将详细介绍C++中的vector类型及其常用操作,适合对C++稍有基础的开发者。

2. vector是什么

vector是C++标准库中一个非常有用的动态数组容器。它的特点是大小可变,可以随时添加或删除元素,与传统的数组不同,不需要预先分配内存。

3. 向量的初始化

创建vector对象有多种方式:

  • 创建空向量:
    vector
    a;
  • 创建大小为10的向量,元素初始化为0:
    vector
    a(10);
  • 创建大小为10的向量,元素初始化为1:
    vector
    a(10, 1);
  • 克隆另一个向量:
    vector
    b(5);
    vector
    a(b);

4. 常见错误与正确操作

错误的赋值方式

  • 不能直接赋值未初始化的向量元素:
    vector
    a;
    a[0] = 1024; // 错误

    这种写法在未初始化的情况下会导致未定义行为。

正确的赋值方式

  • 使用push_back方法添加元素:
    vector
    a;
    a.push_back(2);
    a.push_back(5);
  • 访问元素时使用括号:
    int val = a[0];

5. 向量的内置函数

vector提供了丰富的内置函数来操作容器:

  • size():返回向量中元素的数量。
    int n = a.size();
  • push_back():向向量末尾添加元素。
    a.push_back(10);
  • pop_back():移除向量末尾的元素。
    a.pop_back();
  • clear():清空向量中的所有元素。
    a.clear();

6. 向量的二维使用

在C++中,vector可以表示二维数组。以下代码示例展示了如何使用二维向量:

#include 
#include
int main() {
// 初始化两个向量
std::vector
> v(2); // 两个行向量,初始为空
// 向各行向量添加元素
for (int j = 0; j < 3; j++) {
for (int i = 0; i < 2; i++) {
v[i].push_back(i + j + 5); // i=0时,向第一个行向量添加元素
std::cout << v[i].size() << std::endl; // 输出当前行向量的大小
}
}
// 打印结果
std::cout << v[0][0] << std::endl; // 5
std::cout << v[1][0] << std::endl; // 6
std::cout << v[0][1] << std::endl; // 6
std::cout << v[1][1] << std::endl; // 7
std::cout << v[0][2] << std::endl; // 7
std::cout << v[1][2] << std::endl; // 8
return 0;
}

7. 完整代码示例

以下是一个完整的代码示例,展示了vector的初始化、赋值、常用操作以及二维向量的使用:

#include 
#include
int main() {
// 示例1:向量的基本操作
std::vector
obj;
for (int i = 0; i < 10; i++) {
obj.push_back(i + 5);
std::cout << obj[i] << ",";
}
std::cout << std::endl;
std::cout << obj.size() << std::endl; // 输出10
// 操作:删除前5个元素
for (int i = 0; i < 5; i++) {
obj.pop_back();
}
// 打印剩余元素
for (int i = 0; i < obj.size(); i++) {
std::cout << obj[i] << ",";
}
std::cout << std::endl;
// 清空向量
obj.clear();
std::cout << "obj.size() = " << obj.size() << std::endl; // 输出0
return 0;
}

8. 二维向量示例

以下是使用二维vector的示例代码:

#include 
#include
int main() {
// 初始化两个行向量
std::vector
> v(2);
// 向各行向量添加元素
for (int j = 0; j < 3; j++) {
for (int i = 0; i < 2; i++) {
v[i].push_back(i + j + 5); // i=0时,向第一个行向量添加元素
std::cout << v[i].size() << std::endl; // 输出当前行向量的大小
}
}
// 打印结果
std::cout << v[0][0] << std::endl; // 5
std::cout << v[1][0] << std::endl; // 6
std::cout << v[0][1] << std::endl; // 6
std::cout << v[1][1] << std::endl; // 7
std::cout << v[0][2] << std::endl; // 7
std::cout << v[1][2] << std::endl; // 8
return 0;
}

以上内容不仅涵盖了vector的基础操作,还包括了二维向量的实际应用示例,适合开发者在实际项目中参考和学习。

上一篇:[ Git ] Git教程——指令
下一篇:【C++】Eigen介绍与使用 —— 4

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年05月04日 04时54分52秒