c++获取vector中间一段
时间: 2024-12-02 13:12:07 浏览: 15
在C++中,如果你想获取`std::vector`的中间部分,可以创建一个新的向量,并通过迭代器操作将原向量的一部分元素复制到新向量。以下是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
// 获取中间段的函数
template<typename T, size_t MiddleIndex>
std::vector<T> getMiddleSegment(const std::vector<T>& vec) {
std::vector<T> middle_segment;
size_t start = MiddleIndex > 0 ? MiddleIndex : 0;
size_t end = MiddleIndex + 1 >= vec.size() ? vec.size() - 1 : MiddleIndex + 1;
// 检查边界条件并避免越界
if (start < vec.size() && end <= vec.size()) {
middle_segment.reserve(end - start + 1);
for (size_t i = start; i != end; ++i) {
middle_segment.push_back(vec[i]);
}
}
return middle_segment;
}
int main() {
std::vector<int> numbers {1, 2, 3, 4, 5, 6, 7, 8, 9};
int middle_index = 4; // 假设我们想取从索引4开始的中间部分
auto middle = getMiddleSegment(numbers, middle_index);
for (const auto& num : middle) {
std::cout << num << " ";
}
return 0;
}
```
在这个例子中,`getMiddleSegment`函数接受一个`std::vector`和一个中间索引作为输入,然后返回包含指定中间部分的新向量。注意这个函数假设`MiddleIndex`是基于0的,如果`MiddleIndex`大于向量长度的一半,则返回从开头到结尾的半个向量。
阅读全文