Как загрузить вектор STL с константой - PullRequest
0 голосов
/ 20 февраля 2020

Если у меня есть vector<double>, размер которого уже был изменен на 1200, каков наилучший способ загрузки этого вектора с одинаковым значением в каждом слоте? Значение не известно во время компиляции.

Сейчас я просто использую al oop через все 1200 слотов и устанавливаю каждый слот равным значению. Мне было интересно, если это был лучший способ сделать это.

Ответы [ 2 ]

2 голосов
/ 20 февраля 2020

Вы можете использовать std::vector конструктор

explicit vector (size_type n, const value_type& val = value_type(), const allocator_type& alloc = allocator_type());

следующий путь

vector<double> myVector;
double value = 1.;
myVector = vector<double>(1200, value);

альтернатива std::fill, которая будет избегать выделения памяти

std::fill(begin(myVector), end(myVector), value);
0 голосов
/ 20 февраля 2020

Вы можете использовать l oop, развернув :

std::vector<double> my_vector(1200);
for (int i = 0; i < 300; i += 4)
{
    my_vector[i + 0] = value;
    my_vector[i + 1] = value;
    my_vector[i + 2] = value;
    my_vector[i + 3] = value;
}

Я предлагаю поиграть с количеством назначений в l oop. Идея здесь состоит в том, чтобы уменьшить накладные расходы на приращение и ветвление (больше операций с данными).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...