c++用一个vector初始化另一个vector
时间: 2024-10-10 10:13:06 浏览: 41
在C++中,你可以使用`std::vector`的构造函数或成员函数`assign()`来初始化一个新创建的`vector`。以下是几种常见的方式:
1. **直接赋值**:
```cpp
std::vector<int> vec1 = {1, 2, 3}; // 创建一个包含元素1, 2, 3的vector
std::vector<int> vec2; // 空的vector
vec2 = vec1; // 使用赋值操作符复制vec1的内容到vec2
// 或者如果你想要保留原向量的位置信息,可以使用reserve()预分配空间,然后使用insert():
std::vector<int> vec2;
vec2.reserve(vec1.size());
for (int i : vec1) {
vec2.insert(vec2.end(), i);
}
```
2. **范围-based for循环**(C++17开始支持):
```cpp
std::vector<int> vec1 = {4, 5, 6};
std::vector<int> vec2(vec1.begin(), vec1.end()); // 直接复制元素
```
3. **利用`std::copy`**:
```cpp
std::vector<int> vec1 = {7, 8, 9};
std::vector<int> vec2;
std::copy(vec1.begin(), vec1.end(), std::back_inserter(vec2)); // 将vec1的内容复制到vec2的尾部
```
4. **`assign`函数**:
```cpp
std::vector<int> vec1 = {10, 11, 12};
std::vector<int> vec2(3, 0); // 初始化一个有3个元素全为0的vector
vec2.assign(vec1.begin(), vec1.end()); // 复制vec1的内容到vec2
```
阅读全文