Tworzenie wektora - prośba o wytłumaczenie kodu

Skromny Szewc
2018-08-29 16:53
Skromny Szewc
0
vector<double> hour { vector<double>(24,not_a_reading) };
vector<double> hour (24, not_a_reading);

Nie rozumiem zapisu z pierwszej linijki.
Jedno co mi chodzi po głowie to wektor wektorów ale chyba nie o to tutaj chodzi.

Pozostało 580 znaków

kq
2018-08-29 17:05
kq
Moderator C/C++

Rejestracja: 6 lat temu

Ostatnio: 1 minuta temu

Lokalizacja: Szczecin

1

Pierwsza to zwykły move constructor, kompletnie tutaj zbędny.


Pozostało 580 znaków

Skromny Szewc
2018-08-29 17:08
Skromny Szewc
0

Więc w obu linijkach tworzony jest taki sam wektor?

Pozostało 580 znaków

kq
2018-08-29 17:35
kq
Moderator C/C++

Rejestracja: 6 lat temu

Ostatnio: 1 minuta temu

Lokalizacja: Szczecin

1

Sprawdźmy to!

vector<double> a { vector<double>(24, not_a_reading) };
vector<double> b (24, not_a_reading);

DBG(a == b);
a == b                                                      true

https://wandbox.org/permlink/aWu7pctN4PKp3a4H


edytowany 1x, ostatnio: kq, 2018-08-29 17:36

Pozostało 580 znaków

Czarny Jeleń
2018-08-29 19:02
Czarny Jeleń
0
const int not_a_reading = -7777;

struct Day {
    vector<double> hour (24, not_a_reading);
};

int main() {

    vector<double> hour(24, not_a_reading);
}

Gdy definiuję wektor w strukturze otrzymuje błędy, gdy zastosuje move constructor wszystko jest ok.
Jesteś w stanie wytłumaczyć mi to w jakiś prosty sposób? Tzn. co to jest ten cały move constructor.

Pozostało 580 znaków

kq
2018-08-29 19:19
kq
Moderator C/C++

Rejestracja: 6 lat temu

Ostatnio: 1 minuta temu

Lokalizacja: Szczecin

1

Takie reguły języka, inicjalizacja w ciele klasy jest relatywnie nowa i wymaga uniform initalization lub znaku równości.


Pozostało 580 znaków

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0