Как инициализировать вектор <int> v (1000) со значениями {1,1,1,…, 1} без цикла в C ++?

0

Мы можем инициализировать vector в C++11 следующим образом

vector<int> v {1,2,3,4,5,6}

Но что, если я хочу инициализировать vector<int> v(1000) со значениями {1,1,1,1....1}?


В python это будет:

somelist [1] * 1000

Я не уверен, что у Python есть петля за этой линией, но моя цель, опустив цикл, - это сделать лучше с точки зрения производительности и более простого кода.

  • 0
    C ++ или Phyton не имеют значения: пока за ними не стоит машина фон Неймана, получение 1000 значений из 1 должно быть линейным. замаскировано ли это в особенность языка или конструктор класса (например, std :: vector) - абстракция более высокого уровня. Код может быть проще, но производительность ... будет такой же.
Теги:
c++11
vector
syntax

1 ответ

6
Лучший ответ

Если вы хотите, чтобы вектор из 1000 элементов был установлен в 1, то std::vector имеет конструктор, который делает это для вас:

vector<int> v(1000, 1);

Временная сложность этого конструктора обязательно линейна, но вы можете ожидать, что она будет очень быстрой. Вам будет сложно найти более быструю альтернативу, поэтому, если это проблема, вам может потребоваться перепроектировать.

  • 0
    ДА! Это то, что я ищу. Не могли бы вы объяснить временную сложность этого кода, пожалуйста? это O (1) или O (N)?
  • 1
    @AK_ Это обязательно линейно по количеству элементов.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню