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.
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.
Pierwsza to zwykły move constructor, kompletnie tutaj zbędny.
Więc w obu linijkach tworzony jest taki sam wektor?
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
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.
Takie reguły języka, inicjalizacja w ciele klasy jest relatywnie nowa i wymaga uniform initalization lub znaku równości.