标准库类型vector和范围for语句

本文介绍了C++标准库中的vector容器及其使用方法,并通过一个实例演示了如何利用范围for语句来遍历vector中的元素。
部署运行你感兴趣的模型镜像

1、标准库类型 vector 表示的是对象的集合,而且是同一类型的对象的集合。它也被成为容器。因为它像容器一样可以把好多数据都放进同样一个容器。

首先,我们在使用 vector 时需要定义适当的头文件。

#include <iostream>
#include <vector>

using namespace std;

2、范围 for 语句,我对他的理解就是,方便便利每一个元素。它可以简单的遍历 vector 和 数组中的所有元素。方便、快捷。


3、下面写一个 demo 更加的简明、易懂。这个 demo 包含以上介绍的两个知识点。 ( 可直接编译运行)

#include <iostream>
#include <vector>

using namespace std;

/*标准库类型vectorpush_backpush中添加元素*/
int main() {
    string str;
    vector <string> text;
    while (cin >> str && str != "*") {
        text.push_back(str);
    }

    /*范围for语句处理vector中的每个元素*/
    for(auto &i : text)
        cout << i << "," << endl;
    return 0;
}

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

<think>嗯,用户之前已经问过关于`vector<vector<string>>`的问题,现在他们想了解vector的基础语句用法。我需要确保这次回答的结构之前一致,保持清晰的分点,使用中文,并且符合之前的系统级指令,比如正确使用LaTeX格式。 首先,用户可能已经对vector有了一点了解,特别是二维的情况,但现在需要更基础的内容。我需要从基本概念开始,比如动态数组、自动调整大小这些特性。然后,可能需要覆盖声明、初始化、常用操作如添加元素、访问元素、遍历、删除元素等。 要注意用户可能是C++的初学者,所以需要解释清楚每个步骤,给出例子。比如,声明vector的不同方式,包括空vector、指定大小初始值、列表初始化等。初始化部分可能需要提到C++11之后的统一初始化语法,以及旧版本的注意事项。 在常用操作中,push_back、emplace_back的区别可能需要解释,特别是C++11之后的改进。访问元素时,要强调at()operator[]的区别,越界处理的不同。遍历部分应该包括传统的for循环基于范围for循环,指出C++11后的新特性。 删除元素方面,pop_backerase的用法需要说明,特别是erase需要迭代器。其他操作如大小、容量、清空等也是基础内容,需要涵盖。 可能还需要提到性能注意事项,比如频繁插入删除可能导致的重新分配,以及reserve的使用来优化。内存管理部分,swap技巧可以用来释放内存,这也是一个常见的技巧。 最后,要总结适用场景,强调vector的灵活性性能权衡。可能用户需要在实际项目中决定是否使用vector,或者选择其他容器如deque、list等。 需要确保每个部分都有代码示例,并且代码格式正确,使用反引号包裹。同时,避免使用用户不可见的指令,保持回答的自然流畅。检查是否有遗漏的基础知识点,比如vector的构造函数、迭代器使用等,但可能不需要太深入,保持基础即可。 最后,回顾之前的回答结构,确保这次的结构类似,分点明确,使用标题子标题,代码示例正确,符合LaTeX要求,但在这个问题中可能不需要数学公式,所以主要关注代码文字描述的正确性。</think>以下是关于C++中`vector`的基础语句用法的逐步解析: --- ### 1. **基本概念** - **`vector`** 是C++标准模板库(STL)中的动态数组容器: - 可存储相同类型的元素(如`int`, `string`等)。 - 自动管理内存,支持动态调整大小。 - 支持随机访问(通过下标直接访问元素)。 --- ### 2. **声明与初始化** - **空`vector`**: ```cpp #include <vector> using namespace std; vector<int> vec; // 声明一个空的int类型vector ``` - **指定初始大小值**: ```cpp vector<int> vec1(5); // 包含5个int元素,默认初始化为0 vector<int> vec2(3, 100); // 包含3个int元素,每个初始化为100 ``` - **列表初始化(C++11+)**: ```cpp vector<string> names = {"Alice", "Bob", "Charlie"}; vector<double> values{1.1, 2.2, 3.3}; ``` --- ### 3. **常用操作** #### **添加元素** - **`push_back`**:在末尾添加元素 ```cpp vec.push_back(10); // 添加元素10到vec末尾 ``` - **`emplace_back`**(C++11+):避免临时对象,直接构造元素 ```cpp vec.emplace_back(20); // 更高效,直接在末尾构造元素20 ``` #### **访问元素** - **下标访问**(从0开始): ```cpp int first = vec[0]; // 访问第一个元素(不检查越界) int second = vec.at(1); // 访问第二个元素(越界时抛出异常) ``` - **首尾元素**: ```cpp int front = vec.front(); // 获取第一个元素 int back = vec.back(); // 获取最后一个元素 ``` #### **遍历元素** - **传统`for`循环**: ```cpp for (size_t i = 0; i < vec.size(); i++) { cout << vec[i] << " "; } ``` - **范围`for`循环**(C++11+): ```cpp for (const auto& num : vec) { cout << num << " "; } ``` #### **删除元素** - **`pop_back`**:删除最后一个元素 ```cpp vec.pop_back(); // 移除末尾元素 ``` - **`erase`**:删除指定位置元素 ```cpp auto it = vec.begin() + 2; // 指向第三个元素 vec.erase(it); // 删除第三个元素 ``` --- ### 4. **其他操作** - **获取大小容量**: ```cpp int size = vec.size(); // 当前元素数量 int capacity = vec.capacity(); // 实际分配的内存可容纳元素数量 ``` - **调整大小**: ```cpp vec.resize(10); // 将元素数量改为10(新增元素默认初始化) vec.resize(5, 99); // 改为5个元素,新增元素初始化为99 ``` - **清空`vector`**: ```cpp vec.clear(); // 移除所有元素(容量不变) vec.shrink_to_fit(); // 释放未使用的内存(容量减小到与size匹配) ``` --- ### 5. **性能注意事项** - **动态扩展**:当插入元素超过当前容量时,`vector`会重新分配内存(通常是双倍扩容),导致原有迭代器失效。 - **预分配内存**:若已知元素数量,可提前分配内存以提高效率: ```cpp vec.reserve(100); // 预分配至少容纳100个元素的内存 ``` --- ### 6. **代码示例** ```cpp #include <iostream> #include <vector> using namespace std; int main() { vector<int> nums = {1, 2, 3}; nums.push_back(4); // 添加元素4 nums.emplace_back(5); // 添加元素5 cout << "元素列表: "; for (int num : nums) { cout << num << " "; // 输出: 1 2 3 4 5 } nums.pop_back(); // 删除最后一个元素(5) cout << "\n大小: " << nums.size(); // 输出: 4 return 0; } ``` --- ### 总结 `vector`是C++中最常用的容器之一,适用于需要动态调整大小且频繁访问元素的场景。通过合理使用`reserve()``emplace_back()`等特性,可以显著优化性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值