przyśpieszenie wczyrtywania zmiennej za pomocą cin

0

Cześć. Mam taki kod:

#include <iostream>
#include <vector>

class Klasa
{
    float p;
    float q;
    float r;
    float s;
}

int main()
{
    int n = 2500000;
    Klasa klasa;
    vector<Klasa> tab(n);
    int i = 0;
    while (i < n)
        std::cin >> tab[i].p >> tab[i].q >> tab[i].r >> tab[i].s;
    //...
    return 0;
}

Chciałbym żeby czas wykonania programu był mniejszy ale nie wiem jak to zrobić. Czy można szybciej wczytać dane z wejścia?

0

std::ios::sync_with_stdio(false); Użyj tego jeśli nie używasz funkcji do obsługi stdin/stdout z biblioteki standardowej C (printf, scanf). Powinno znacząco pomóc na różnych spojach.

0
#include <iostream>
#include <vector>
 
class Klasa
{
    float p;
    float q;
    float r;
    float s;
}
 
int main()
{
    std::ios::sync_with_stdio(false); // synchronizacja z API C nie jest ci potrzebna
    std::cin.tie(NULL); // bez tego próba wczytania danych powoduje wywołanie flush na std::cout

    Klasa a;
    vector<Klasa> tab;
    tab.reserve(2500000); // zarezerwuj pamięć bez jej inicjalizacji

    while (std::cin >> a.p >> a.q >> a.r >> a.s) {
        tab.push_back(a);
    }
    return 0;
}

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