假设我有以下 vector :

std::vector<int> data{0,1,2,3,4};

我想用一个数字替换序列{1,2,3}。我找到了一个带有std::replace的示例,但是有一个数字被其他单个数字替换。如何替换 vector 中的序列?

最佳答案

我们可以使用 std::vector::erase(const_iterator first, const_iterator last) 做到这一点,如下所示。
以下函数将org[start]的值替换为val,然后擦除[start+1, end]范围内的元素:

DEMO

template<class T>
std::vector<T> replace(
    const std::vector<T>& org,
    std::size_t start,
    std::size_t end,
    const T& val)
{
    assert(start <= end);
    assert(end < org.size());

    auto vec(org);
    auto it_s = vec.begin() + start;
    *it_s = val;

    vec.erase(it_s + 1, vec.begin() + end + 1);

    return vec;
}

关于c++ - 如何替换 vector 中的序列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55441820/

10-13 08:10
查看更多