对 6 种创建和初始化 vector 对象的方法,每一种都给出一个实例。解释每个 vector 包含什么值。
时间: 2023-05-11 21:03:49 浏览: 123
1. 使用默认构造函数创建一个空的 vector 对象:
vector<int> v1;
2. 使用带有初始元素数量和初始值的构造函数创建一个 vector 对象:
vector<int> v2(5, 10); // 包含 5 个值为 10 的元素
3. 使用带有初始元素数量的构造函数创建一个 vector 对象,并使用赋值运算符为每个元素赋值:
vector<int> v3(3);
v3[0] = 1;
v3[1] = 2;
v3[2] = 3; // 包含值为 1、2、3 的三个元素
4. 使用另一个 vector 对象创建一个新的 vector 对象:
vector<int> v4(v3); // 包含与 v3 相同的三个元素
5. 使用迭代器创建一个 vector 对象:
int arr[] = {1, 2, 3, 4, 5};
vector<int> v5(arr, arr + 5); // 包含值为 1、2、3、4、5 的五个元素
6. 使用初始化列表创建一个 vector 对象:
vector<int> v6 = {1, 2, 3}; // 包含值为 1、2、3 的三个元素
注意:每个 vector 包含的值取决于创建和初始化 vector 对象的方法。
相关问题
vector输入初始化
### C++ 中 `vector` 的初始化方法
在 C++ 编程中,`vector` 是一种动态数组容器,支持多种初始化方式。以下是几种常见的初始化方法:
#### 使用默认构造函数创建空向量
可以通过不带参数的方式调用构造函数来创建一个空的 `vector` 对象。
```cpp
std::vector<int> v;
v.push_back(1);
v.push_back(2);
for (auto& elem : v) {
std::cout << elem << " ";
}
// 输出: 1 2
```
#### 利用初始值列表进行初始化
利用大括号 `{}` 提供一系列初值来进行初始化,这是 C++11 引入的一种简洁写法[^4]。
```cpp
std::vector<std::string> words{"hello", "world"};
for (const auto& word : words){
std::cout << word << "\n";
}
// 输出:
// hello
// world
```
#### 复制现有 `vector` 进行初始化
当有一个已存在的 `vector` 实例时,可通过复制该实例完成新 `vector` 的初始化工作[^2]。
```cpp
std::vector<double> original{1.1, 2.2};
std::vector<double> copy(original);
for(auto val : copy){
std::cout<<val<<"\t";
}
// 输出: 1.1 2.2
```
#### 设置固定大小并赋定值
如果预先知道 `vector` 所需长度以及各位置上的相同数值,则可采用此方式进行快速填充。
```cpp
int value = 8;
size_t count = 5;
std::vector<int> numbers(count,value);
for(int num : numbers){
std::cout<<num<<" ";
}
// 输出: 8 8 8 8 8
```
怎么将vector初始化
### C++ `vector` 的初始化方法
#### 使用默认构造函数
当声明一个 `vector` 而不提供任何参数时,默认构造函数会被调用,这会创建一个空的向量。
```cpp
std::vector<int> vec;
```
#### 带有指定大小的构造函数
可以通过给定容器中的元素数量来初始化 `vector`。如果还提供了第二个参数,则该值将被用来填充所有的位置[^2]。
```cpp
// 创建含有 n 个零的整数型 vector
std::vector<int> dp(n);
// 或者带有特定初始值 v
std::vector<int> vec(n, v);
```
#### 利用迭代器范围进行初始化
可以从一对输入迭代器之间的元素复制到新构建的对象中。此特性允许从其他容器或数组初始化 `vector`[^1]。
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main(){
int a[5] = {1,2,3,4,5};
// 使用两个指针作为边界定义子序列
vector<int> va(a+1, a+4);
cout << "va的值:" << endl;
for (const auto &i : va){
cout << i << " ";
}
}
```
#### 复制另一个相同类型的对象
可以直接通过拷贝现有的 `vector` 来创建新的实例。
```cpp
std::vector<int> originalVec = {7,8,9,10};
std::vector<int> copiedVec(originalVec);
```
#### 初始化列表语法
自 C++11 开始支持大括号包围的逗号分隔初值表用于直接初始化 `vector` 中的内容。
```cpp
std::vector<int> b = {7,8,9,10};
```
阅读全文