Zwrócenie ostatnio dodanego obiektu do kolekcji

Zwrócenie ostatnio dodanego obiektu do kolekcji
M4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 221
0

Mam taki problem : powiedzmy, że mam listę Integerów i wyglada tak:

Kopiuj
list = [1,2,3,4,5,6,7];
//wykonuję add
list.add(0, 1);
list.add(1, 1);

i teraz chcę zwrócić ostatnio dodany obiekt do listy, czyli w tym wypadku 1 o indexie 1. I pytanie jest następujące: czy jest jakaś klasa, która udostępnia taką metodę, czy trzeba to zrobić jakoś ręcznie (zrobic kopie i porównać starą listę z nową ?) ?

danek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 797
flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12270
0

@danek: prędzej stos (LIFO), skoro chce odczytać ostatnio dodany element.

Mattii4211 napisał(a):

i teraz chcę zwrócić ostatnio dodany obiekt do listy, czyli w tym wypadku 1 o indexie 1.

Co znaczy „zwrócić”? Tylko odczytać, czy odczytać i wyjąć (usunąć) z kontenera?

M4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 221
0

Tylko odczytać

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12270
0

I w dalszym ciągu mieć dostęp do dowolnego elementu listy, a nie tylko do ostatnio dodanego?

danek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 797
0

I jeszcze ważne pytanie. Chcesz mieć dwie kolejności? (dodania i właściwa kolejność listy)

M4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 221
0

Tak, tylko go odczytać i mieć dostęp, kolejność dodatnia nie ma znaczenia, obecnie mam ArrayList ale żeby wykorzystać kolejkę to muszę mieć 2 listę, która przechowuje kolejkę dla każdego obiektu (kolejka dla 1, kolejka dla 2 itp) i wydaje mi się to mało "estetyczne".

Mc_Hammer
  • Rejestracja: dni
  • Ostatnio: dni
0

Cześć,

jeśli dodajesz do kontenera jakieś swoje obiekty to stwórz statyczną zmienną i zmodyfikuj konstruktory. Ja bym przynajmniej tak kombinował ;) Jeśli to zła droga - ktoś mnie poprawi.
Dla zwykłego int było by to coś takiego:

Kopiuj
struct UserInt 
{
	static int last_created_value;
	int val;
	UserInt(const int &v, const int &idx) : val(v) 
	{ 
		last_created_value = idx;
	};
	UserInt(const int &v) :val(v) 
	{ 
		last_created_value++;
	};
};

int UserInt::last_created_value = 0;

int main()
{
	std::vector<UserInt> list{ 1, 2, 4, 5 };
	std::cout << "last after list init: " << UserInt::last_created_value << std::endl;
	int index = 2;
	list.insert(list.begin()+index, UserInt(3, index));
	std::cout << "last after list insert: " << UserInt::last_created_value << std::endl;
	return 0;
}
M4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 221
0

Akurat piszę w jakie ale mam mapę, która dla danego obiektu, przechowuję listę kolejno dodanych obiektów i zwracam ten ostatni zawsze (dodaję za pomocą add(), więc nowy obiekt zawsze jest na końcu)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.