假设我有以下 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/