(C++ 向量)如何在向量内的一系列元素中赋值?

(C++ vectors) How to assign values in a range of elements inside a vector?

我有一个整数向量,比如 {0, 0, 0, 0, 0}。我需要将一系列元素的 v[i] 增加 1,例如 v[1]v[3],这样我就有了 {0, 1, 1, 1, 0}。怎么做?

只需使用简单的迭代循环,例如:

std::vector<int> v = {0, 0, 0, 0, 0};
for(size_t i = 1; i <= 3; ++i) {
    v[i]++;
}

Online Demo

您还可以使用 std::for_each()std::transform() 等标准库算法复制,例如:

std::vector<int> v = {0, 0, 0, 0, 0};
std::for_each(v.begin()+1, v.begin()+4,
    [](int& i){ ++i; }
);

Online Demo

std::vector<int> v = {0, 0, 0, 0, 0};
std::transform(v.begin()+1, v.begin()+4, v.begin()+1,
    [](int i){ return i+1; }
);

Online Demo