Pobieranie wartości
Ostatnio zmodyfikowano 2011-03-12 09:20
BlackDante Temat założony przez niniejszego użytkownika |
Pobieranie wartości » 2011-03-11 21:24:15 Witam mam kolejny problem, tym razem chyba bardziej błahy, mianowicie jako wejście moj program ma pobierać coś takiego: w pierwszej lini liczbę argumentów a w drugiej argumenty oddzielone spacjami. I tutaj pojawia się moje pytanie, czy istnieje jakiś prosty sposób na wczytywanie tak zmiennej ilości argumentów z jednej lini, czy muszę wszystko wczytać do stringa i potem go dzielić po spacjach? |
|
malan |
» 2011-03-11 22:52:39 #include <iostream> #include <vector>
int main() { std::vector < int > numbers; int count = 0, num = 0; std::cin >> count; for(; count > 0; --count ) { std::cin >> num; numbers.push_back( num ); } for( std::vector < int >::iterator it = numbers.begin(); it != numbers.end(); ++it ) std::cout << * it << std::endl; } |
|
ison |
» 2011-03-11 23:42:42 jeśli ilość podanych wartości na wejściu przekracza 100000 to radzę wczytywać przez scanf - jest szybszy |
|
BlackDante Temat założony przez niniejszego użytkownika |
» 2011-03-11 23:48:14 o dziękuję pięknie :) chociaż można powiedzieć że to jest bardziej zaawansowane niż dzielenie Stringa po spacjach :)
@Ison dziękuje za słuszną uwagę, na pewno się przyda :) |
|
malan |
» 2011-03-11 23:51:34 @ison: Aha, czyli dla 99 999 liczb std::cin będzie szybszy? ;p |
|
ison |
» 2011-03-12 09:20:28 @malan Nie, dla 99999 liczb to czy użyjesz cin czy scanf nie zrobi wielkiej różnicy, w programach sprawdzających poprawność programów nigdy nie ustawia się skrajnych limitów czasowych. To czy program będzie działał ~1 ms czy ~2 ms nie zrobi aż takiej różnicy jak ton czy będzie działał ~300 ms czy ~600 ms. Liczbę 100.000 rzuciłem tak na oko - najczęściej najlepiej starać się wczytywać jedynie przez scanf. Chyba, że liczb na wejściu jest mało lub chcemy wczytać std::string - nie ma zbytniego sensu bawić się potem w konwersję na char* |
|
« 1 » |