You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

std::vector元素删除的便捷可读实现方式及C++版本规划咨询

在C20/C23中std::vector无removeindex类成员函数

C20和C23标准均未为std::vector引入类似removeindex(index)的成员函数,标准库仍保留通过erase()结合迭代器的方式删除指定位置元素。

标准库设计倾向于维持接口精简性——erase()已覆盖"通过迭代器删除元素"的场景,而begin() + index转换为迭代器的写法,是C++容器操作里通用的模式,适用于所有支持随机访问迭代器的容器(比如std::deque)。

如果追求更直观的调用方式,你可以自行封装一个简单的模板函数:

#include <vector>
#include <stdexcept>

template<typename T>
void remove_index(std::vector<T>& vec, size_t index) {
    if (index >= vec.size()) {
        throw std::out_of_range("remove_index: index out of bounds");
    }
    vec.erase(vec.begin() + index);
}

// 调用示例
// std::vector<int> nums = {1,2,3,4};
// remove_index(nums, 2); // nums变为{1,2,4}

若需要支持链式调用(比如连续执行删除操作),可让函数返回容器引用:

template<typename T>
std::vector<T>& remove_index(std::vector<T>& vec, size_t index) {
    if (index >= vec.size()) {
        throw std::out_of_range("remove_index: index out of bounds");
    }
    vec.erase(vec.begin() + index);
    return vec;
}

// 链式调用示例
// remove_index(nums, 0);
// remove_index(nums, 1);

这种自定义封装完全能满足你对可读性的需求,同时保留代码灵活性。

内容的提问来源于stack exchange,提问作者Jabberwocky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 20:52:11