Zwrócenie ostatnio dodanego obiektu do kolekcji

0

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

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ą ?) ?

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?

0

Tylko odczytać

0

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

0

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

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".

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:

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;
}
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)

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