Вы можете получить последний элемент списка, выполнив следующее:
#include <iostream>
#include <iterator>
#include <list>
int main () {
std::list<int> mylist;
for (int i = 0; i < 10; i++)
mylist.push_back (i*10);
auto last = std::prev(mylist.end());
std::cout << "The last element is " << *last << '\n';
return 0;
}
Или вы можете получить итератор перед другим итератором, используя то же самое, как это:
#include <iostream>
#include <iterator>
#include <list>
int main () {
std::list<int> mylist;
for (int i = 0; i < 10; i++)
mylist.push_back (i*10);
auto last = std::prev(mylist.end());
auto prelast = std::prev(last);
std::cout << "The last element is " << *last << '\n';
std::cout << "The prelast element is " << *prelast << '\n';
return 0;
}
Или просто используйте --
, как вы уже делаете:
#include <iostream>
#include <iterator>
#include <list>
int main () {
std::list<int> mylist;
for (int i = 0; i < 10; i++)
mylist.push_back (i*10);
auto last = std::prev(mylist.end());
auto prelast = std::prev(last);
std::cout << "The last element is " << *last << '\n';
std::cout << "The prelast element is " << *prelast << '\n';
prelast--;
std::cout << "The preprelast element is " << *prelast << '\n';
return 0;
}