Что значит 'vector <double>hour {vector <double>(24, -1)};'имею в виду? - PullRequest
0 голосов
/ 06 февраля 2019

Является ли этот вектор из 24 векторов инициализированными в «-1»?Если так, то почему часовой вектор типа 'vector' вместо 'double'?

Я не могу визуализировать структуру данных, которая будет формироваться.

Ответы [ 4 ]

0 голосов
/ 06 февраля 2019

Согласно странице cppreference , это форма конструктора

vector(size_type count,
       const T& value,
       const Allocator& alloc = Allocator());
// Constructs the container with <count> copies of elements, each with value <value>.

с распределителем по умолчанию.

Следовательно, он создает вектор размером 24с каждым элементом этого вектора, установленным в -1.

. И тип hour не является ни double , ни vector, это vector<double>, что удивительно,вектор чисел: -)

0 голосов
/ 06 февраля 2019

сначала создается экземпляр вектора double с 24 элементами, инициализированными с -1.0 (неявно), затем создается копия для создания нового вектора с двойным именем час.

update: современный компиляторбудет иметь оптимизации, использующие семантику перемещения для этой операции, и не будет выполнять глубокое копирование.

лучший способ сделать это - просто vector<double> hour(24, -1);

0 голосов
/ 06 февраля 2019

vector<double>(24, -1) создает вектор размером 24 и каждое значение инициализируется -1.vector <double> hour{vector<double>(24, -1)} использует конструктор копирования, чтобы сделать копию этого вектора, поэтому он также имеет 24 -1 с.

{-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0}
0 голосов
/ 06 февраля 2019
vector<double> hour { vector<double>(24, -1) };

Это приведет к одному вектору из 24 с -1 с именем hour.vector<double>(24, -1) внутри {} является временным вектором, который создается для создания вектора hour.

Визуально с опущенным символом .0:

{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}

Если это так, то почему часовой вектор типа 'vector' вместо 'double'?

Часовой вектор типа vector<double> <> для шаблонови определите во время компиляции, какой тип будет содержать вектор.

Если бы вместо этого он сказал vector<int> hour, это был бы вектор значений int вместо double значений.

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