请写出线性表元素的区间删除的c++代码
时间: 2024-12-16 15:18:18 浏览: 6
在C++中,如果我们有一个动态数组或向量作为线性表,并想要删除某个范围内的元素,可以使用`std::vector`的`erase`方法结合`begin()`和`end()`迭代器来实现。这里是一个简单的示例,假设我们有一个整数向量`nums`:
```cpp
#include <iostream>
#include <vector>
// 删除指定范围内的元素
void deleteRange(std::vector<int>& nums, int start, int end) {
// 检查范围是否有效
if (start < 0 || start >= nums.size() || end > nums.size()) {
std::cout << "Invalid range!" << std::endl;
return;
}
// 如果范围结束位置超过向量长度,将其设置为向量末尾
if (end > nums.size()) {
end = nums.size();
}
// 使用迭代器从后向前删除元素
nums.erase(nums.begin() + end, nums.begin() + start);
}
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5, 6, 7};
int start = 2, end = 5; // 要删除的起始和结束索引
deleteRange(nums, start, end);
// 输出删除后的向量
for (const auto& num : nums) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
这个例子中,`deleteRange`函数会删除从`start`到`end - 1`(包括`start`,但不包括`end`)的所有元素。如果范围超出向量大小,则视为无效。
阅读全文