Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[STL] Przekazanie wektora wskaźników do funkcji.

Ostatnio zmodyfikowano 2016-01-31 20:03
Autor Wiadomość
hit
Temat założony przez niniejszego użytkownika
» 2016-01-30 17:40:46
Zestawienia, które tworzę mają docelowo być zapisywane w osobnym pliku więc siłą rzeczy przetworzone muszą być całe te dane z dużego pliku.. jakaś podpowiedź odnośnie wyszukiwania tych danych w drugim wektorze? Może to + rezerwacja pamięci wystarczy, żeby czas tego był satysfakcjonujący.
P-144191
pekfos
» 2016-01-30 17:43:53
Zestawienia, które tworzę mają docelowo być zapisywane w osobnym pliku więc siłą rzeczy przetworzone muszą być całe te dane z dużego pliku..
W którym miejscu napisałem, że nie masz przetworzyć całego pliku..? Jak dane będą miały kilka gigabajtów, to co? Każesz użytkownikowi dokupić RAMu, bo nie możesz wszystkiego wczytać naraz do pamięci?

jakaś podpowiedź odnośnie wyszukiwania tych danych w drugim wektorze?
Dostałeś jasną podpowiedź, chyba, że nie znasz podstawowych narzędzi z STL/algorytmów. Wtedy jeszcze jaśniej: std::map<>, lub wyszukiwanie binarne, jeśli chcesz zachować wektor.
P-144194
hit
Temat założony przez niniejszego użytkownika
» 2016-01-30 17:48:42
No właśnie chodziło mi o zachowanie wektora - dzięki, spróbuję z wyszukiwaniem binarnym.

Co do przetworzenia całego pliku to jeszcze ma być możliwość sortowania wg niektórych kolumn, więc jak miałbym to robić częściami to albo bym musiał za każdym razem ładować te pliki, albo po pierwszym zapisaniu całego zestawienia działać już tylko na nim, ale wtedy żeby posortować całość to i tak musiałbym mieć wszystkie dane wczytane.
P-144195
pekfos
» 2016-01-30 17:53:07
ale wtedy żeby posortować całość to i tak musiałbym mieć wszystkie dane wczytane.
Nieprawda. Można posortować dane, które nie mieszczą się w pamięci. Ale najlepiej, jakbyś sprecyzował, czy chcesz działać na takich danych.
P-144196
j23
» 2016-01-30 17:54:55
@hit, użyj indeksów (tablicę z offsetami na pozycje kolejnych rekordów), wtedy nie będziesz musiał wczytywać wszystkich danych przy wyszukiwaniu.
P-144197
hit
Temat założony przez niniejszego użytkownika
» 2016-01-30 18:06:00
@pekfos, chciałbym to zrobić przede wszystkim jak najprościej. Największy wczytywany plik (.csv) ma niecałe 10mb więc to chyba nie jest aż taki straszny rozmiar. Założenie miałem takie, żeby wczytać całość, utworzyć te zestawy i zapisać do pliku, ale trzymać je nadal w pamięci do ewentualnych operacji sortowań.
Mógłbyś mi jeszcze podpowiedzieć odnośnie tego binarnego wyszukiwania jak to zastosować wobec wektora obiektów? Z tego co widzę, to również należy wykorzystać sortowanie ale jak przekazać jako argument wartość dla odpowiedniego pola tego obiektu, żeby było jasne który iterator ma być zwrócony?

@j23 prosiłbym trochę jaśniej : )
P-144199
pekfos
» 2016-01-30 18:11:27
Mógłbyś mi jeszcze podpowiedzieć odnośnie tego binarnego wyszukiwania jak to zastosować wobec wektora obiektów? Z tego co widzę, to również należy wykorzystać sortowanie ale jak przekazać jako argument wartość dla odpowiedniego pola tego obiektu, żeby było jasne który iterator ma być zwrócony?
Zdefiniuj odpowiednie predykaty i przekaż je do funkcji sortującej i szukającej.
P-144202
hit
Temat założony przez niniejszego użytkownika
» 2016-01-30 18:46:33
Próbuję w taki sposób:

C/C++
bool sortSlownik( const Slownik s1, const Slownik s2 )
{
    return s1.nazwisko < s2.nazwisko;
}
...
itSlow = lower_bound( slownik.begin(), slownik.end(), klasa[ i ].nazwisko, sortSlownik );

ale pojawia mi się błąd dot. konwersji:

'bool (Slownik,Slownik)': cannot convert argument 2 from 'const std::string' to 'Slownik'

nie do końca rozumiem gdzie się odbywa ta konwersja?
P-144206
1 « 2 » 3 4 5
Poprzednia strona Strona 2 z 5 Następna strona