Element listy - wydobycie ze środka bez użycia pętli.

0

Być może to głupie pytanie, ale:
jeśli mam vector typu: vector<int> vec; to żeby dostać N element wystarczy, że zrobić vec[N-1] tzn. np. int element = v[N-1];
A co jeśli mam listę i chcę wydobyć tylko jeden element ze środka o indeksie N?
Czy jest możliwość zrobienia tego w inny sposób niż przez pętlę tj.:

	list<int> lista;
	//...
	auto iter = lista.begin();
	for(size_t i = 0; i < N; ++i)
		++iter;
	int element = *iter;

Jak to zrobić najbardziej optymalnie?

2

Nie, bo lista z definicji umożliwia szybki dostęp jedynie do początku i/lub końca.

0

dzięki. a czy ma znacznie dla wydajności czy elementy dodajemy na początek listy czy na koniec?

2

Jak to zrobić najbardziej optymalnie?

  1. Nie ma czegoś takiego jak najbardziej optymalnie.
  2. Nie używaj std::list w C++, w ogóle nie używaj najlepiej żadnego innego kontenera poza std::vector na razie. Jak będziesz potrzebować jakiegokolwiek innego to będziesz już na tyle świadomy, że będziesz znał jego słabe/mocne strony.
0
n0name_l napisał(a):

Nie używaj std::list w C++, w ogóle nie używaj najlepiej żadnego innego kontenera poza std::vector na razie...

Ewentualnie std::deque jeśli potrzeba doklejania/odcinania nie tylko z końca, ale i z początku.

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