std::vector 如何通过取出i和j 范围内的数据赋值给另一个std::vector
时间: 2024-09-09 14:09:18 浏览: 44
C++语言中std::array的用法小结(神器用法)
5星 · 资源好评率100%
在C++中,`std::vector`是一种动态数组,它提供了随机访问的功能。通过索引,你可以直接访问存储在`std::vector`中的数据。如果你有两个`std::vector`对象,并希望取出它们在特定范围内的数据,并将其赋值给另一个`std::vector`,你可以使用以下方法:
```cpp
#include <vector>
std::vector<int> vec1 = {1, 2, 3, 4, 5};
std::vector<int> vec2;
// 从vec1的第i个元素开始,到第j个元素结束,取出数据赋值给vec2
for (int i = 0; i <= vec1.size() - j; i++) {
for (int j = 0; j < vec1[i]; j++) {
vec2.push_back(vec1[i]); // 或者使用赋值运算符直接赋值
}
}
```
在这个例子中,我们使用了两个嵌套的循环。外层循环用于遍历`vec1`中的元素,内层循环用于取出当前元素的值并将其添加到`vec2`中。注意,我们使用的是`vec1[i]`来获取当前元素的值,这是因为`std::vector`提供了随机访问的功能。
请注意,这个代码假设`j`的值不会超过`vec1`的大小。如果可能超出范围,你需要添加一些额外的检查来确保不会发生越界错误。
另外,你也可以使用C++标准库中的`std::copy()`函数来更简洁地完成这个任务:
```cpp
#include <vector>
#include <algorithm>
std::vector<int> vec1 = {1, 2, 3, 4, 5};
std::vector<int> vec2;
std::copy(vec1.begin() + i, vec1.begin() + j, std::back_inserter(vec2));
```
这段代码与前面的代码做的事情一样,但它使用了C++标准库中的函数,使代码更加简洁。注意这里使用了`std::back_inserter(vec2)`来创建一个迭代器,用于将数据插入到`vec2`的末尾。
阅读全文