for_each, но для установки каждого элемента к значению в C++

У меня есть следующий код для присвоения значения всем элементам вектора:

x = 100;

for (int i=0;i<vect.size();i++)
{
    vect[i] = x;
}

Это достаточно просто, но я задаюсь вопросом, существует ли функция в STL, который делает то же самое; что-то как for_each, но для присвоения.

5
задан Vlad the Impala 5 April 2010 в 23:59
поделиться

2 ответа

Используйте std :: fill :

std::fill(vect.begin(), vect.end(), 100);

Обратите внимание, если вы хотите инициализировать вектор так, чтобы он имел одно и то же значение, вы можете использовать соответствующий конструктор:

std::vector<int> v(5, 100); // 5 elements set to 100

assign можно использовать для «сброса вектора», но если вы просто создаете вектор, используйте конструктор.

10
ответ дан 18 December 2019 в 09:48
поделиться
vect.assign(n, x);

n - количество элементов.

x - значение для заполнения.

Отличие от std :: fill в том, что для этого вы указываете длину. std :: fill будет использовать предыдущую длину вектора. (Фактически, он будет использовать любой сегмент вектора, который вы ему укажете, но с помощью vect.begin () и vect.end () , как в приведенном выше примере, будет использоваться предыдущая длина.) В зависимости от ситуации вы захотите использовать одно или другое.

7
ответ дан 18 December 2019 в 09:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: