C++基础<04>—标准库vector类型

本文介绍了C++中的标准库vector,它是一个类模板,可用于定义不同类型的对象。主要内容包括vector的定义与初始化方式,如空vector、复制构造、指定元素数量的初始化。此外,还讲解了vector的操作,如检查是否为空、获取元素数量、在末尾添加元素、访问元素以及赋值操作。最后提到了vector的迭代器,这是一种遍历和检查容器内元素的工具。
#include <vector>
using std::vector;

vector不是一种数据类型,而只是一个类模版,可用来定义任意多种数据类型。

定义及初始化:

### 将 `vector<double>` 转换为 `vector<int>` 在 C++ 中,`std::vector<T>` 是模板容器,可以存储任意类型的对象。当需要将一种类型的 `vector` 转换为另一种类型时,通常有两种方法:逐元素转换和使用标准库算法。 #### 方法一:手动遍历并赋值 可以通过显式循环来实现从 `double` 到 `int` 的转换: ```cpp #include <iostream> #include <vector> void convertDoubleToIntManual() { std::vector<double> doubles = {1.0, 2.5, 3.7}; std::vector<int> integers; for (auto& value : doubles) { integers.push_back(static_cast<int>(value)); } // 输出结果验证 for (auto val : integers) { std::cout << val << " "; } } ``` 这种方法简单直观,适用于小型数据集或特定场景下的处理[^1]。 #### 方法二:利用 `<algorithm>` 中的 `transform` 更高效的方式是借助于 STL 提供的强大工具——`<algorithm>` 头文件里的 `std::transform` 函数来进行批量操作: ```cpp #include <iostream> #include <vector> #include <algorithm> void convertDoubleToIntTransform() { std::vector<double> doubles = {1.0, 2.5, 3.7}; std::vector<int> integers(doubles.size()); std::transform( doubles.begin(), doubles.end(), integers.begin(), [](double d){ return static_cast<int>(d); }); // 打印转换后的整数列表 for(auto it=integers.cbegin();it!=integers.cend();++it){ std::cout<< *it <<" "; } } ``` 此法不仅简洁而且性能优越,在面对大规模数据时尤为适用[^2]。 需要注意的是,上述两种方式都涉及到了强制类型转换 (`static_cast`) ,这可能会导致精度损失以及潜在的数据溢出风险。因此,在实际应用过程中应当谨慎评估源数据范围及其可能带来的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值