• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przeszukiwanie tablicy pair

HackNation - ogólnopolski hackathon
0 głosów
1,509 wizyt
pytanie zadane 20 stycznia 2016 w C i C++ przez Noak Mądrala (5,900 p.)

Witam stworzyłem tablicę typu pair która przechowuje mi współrzędne punktu.    

pair<long long ,long long>punkt[100010];

Chciałbym teraz sprawdzić czy już dany punkt znajduje się w tablicy.

Niestety ten sposób jest za wolny.

for(int j=0;j<i;j++)
    	{
    		
    		if(x==punkt[j].first)
			
    		{
    			if(y==punkt[j].second)
    			
				{
				jest=1;
    			break;
				}
			}
		}

 

Próbowałem przeszukać tablicę za pomocą funkcji find lecz wyskakiwał mi błąd kompilacji. 

  

   pair<long long ,long long>heh;
    heh=make_pair(x,y);
  auto  *it= find( punkt, punkt + 8,heh) ;

Czy jest w ogóle możliwe przeszukanie tablicy pair za pomocą funkcji find ?? Jeśli tak to w jaki sposób. A jeśli nie to czy da radę przeszukać mapę za pomocą funkcji find ??


 

1 odpowiedź

+1 głos
odpowiedź 21 stycznia 2016 przez adrian17 Mentor (354,880 p.)
wybrane 21 stycznia 2016 przez Noak
 
Najlepsza

Próbowałem przeszukać tablicę za pomocą funkcji find lecz wyskakiwał mi błąd kompilacji. 

Jaki konkretnie? Bo nie ma tam niczego złego (choć brzydkie jest).

Niestety ten sposób jest za wolny.

std::find nie będzie magicznie szybsze od takiej pętli.

Ważne pytania:

- czy kompilujesz z optymalizacjami?

- czy kompilujesz w trybie 64-bitowym? long long ma 64 bity i może być wolne w trybie 32-bitowym.

- jeśli dużo szukasz, może przydać się inna struktura, na przykład std::(unordered_)set.

 

 

komentarz 21 stycznia 2016 przez Noak Mądrala (5,900 p.)
nie wiem  do końca o co chodzi z optymalizacją kompilacji :) Aczkolwiek funkcja find jest zawarta w nowszych wersjach c++ natomiast ja kompilowałem w wersji c++ 4.3.2 i w tym tkwił kłopot.

tryb 64-bitowy
komentarz 21 stycznia 2016 przez adrian17 Mentor (354,880 p.)

Aczkolwiek funkcja find jest zawarta w nowszych wersjach c++

std::find jest z oryginalnego standardu z 1998, nie wmówisz mi że GCC z 2008 go nie ma (i w dodatku widzę go w źródłach z roku 2000).

nie wiem  do końca o co chodzi z optymalizacją kompilacji

To po co wspominasz że "Niestety ten sposób jest za wolny." i że próbujesz użyć std::find?

komentarz 21 stycznia 2016 przez Noak Mądrala (5,900 p.)
Te przeszukiwanie potrzebne mi było do zadanie z spoja. Dostałem na nim tle dlatego napisałem że sposób jest z wolny. Próbowałem metody std::find gdyż kolega użył jej do map i wszystko działało.

Co do "nowszych wersji" to nic nie chcę nikomu wmawiać :) Po prostu tak myślałem patrząc na różne wersje kompilacji. Dziękuję za wyprowadzenie z błędu :)
komentarz 22 stycznia 2016 przez adrian17 Mentor (354,880 p.)
cóż, std::find robiłoby dokładnie to samo co Twoje ręczne przeszukanie. Pewnie musisz przemyśleć cały algorytm lub struktury danych, jak zazwyczaj trzeba na spoju.
komentarz 22 stycznia 2016 przez Noak Mądrala (5,900 p.)
Problem został już rozwiązany :) Zrobiłem na mapach. Dziękuję za pomoc.

Podobne pytania

+3 głosów
1 odpowiedź 971 wizyt
0 głosów
0 odpowiedzi 857 wizyt
pytanie zadane 30 lipca 2018 w C i C++ przez Sic Dyskutant (8,510 p.)
0 głosów
2 odpowiedzi 1,258 wizyt
pytanie zadane 30 maja 2019 w C i C++ przez patryk241 Użytkownik (700 p.)

93,626 zapytań

142,551 odpowiedzi

323,048 komentarzy

63,130 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 1452p. - dia-Chann
  2. 1437p. - DziarnowskiJ
  3. 1411p. - Łukasz Piwowar
  4. 1409p. - CC PL
  5. 1388p. - Maurycy W
  6. 1371p. - raydeal
  7. 1369p. - Adrian Wieprzkowicz
  8. 1360p. - Tomasz Bielak
  9. 1335p. - robwarsz
  10. 1296p. - Michal Drewniak
  11. 1269p. - Rafał Trójniak
  12. 1248p. - rafalszastok
  13. 1141p. - ssynowiec
  14. 1116p. - rucin93
  15. 1102p. - Dominik Łempicki (kapitan)
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...