0 / 0 / 0
Регистрация: 15.09.2018
Сообщений: 133
|
||||||
1 | ||||||
Как вызвать исключение выхода за пределы контейнера stl ?16.01.2019, 11:03. Показов 1686. Ответов 9
Метки нет (Все метки)
0
|
16.01.2019, 11:03 | |
Ответы с готовыми решениями:
9
МОЖНО ли вызвать исключение выхода за пределы контейнера list (STL) ? Как вынести за пределы контейнера из col Как скрывать блоки, которые перемещаются за пределы контейнера? Как вызвать метод объекта из контейнера? |
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
|
|
16.01.2019, 11:19 | 2 |
Всмысле throw std::out_of_range();?
0
|
610 / 415 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
|
|
16.01.2019, 11:24 | 3 |
0
|
243 / 268 / 219
Регистрация: 14.11.2016
Сообщений: 1,043
|
|
16.01.2019, 11:31 | 4 |
никак, список замкнутый, iterator гуляет по кругу (т.е. it = list.end(); ++it; то it будет уже указывать на начало списка). А индексации какой-либо у него нет, чтобы можно было выйти за пределы, например, при вставке какого-то элемента указать индекс на несуществующий элемент - увы, нельзя.
0
|
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,162
|
||||||
16.01.2019, 22:35 | 5 | |||||
На словах должно вывести 1
0
|
610 / 415 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
|
|
16.01.2019, 22:46 | 6 |
0
|
243 / 268 / 219
Регистрация: 14.11.2016
Сообщений: 1,043
|
|
17.01.2019, 10:28 | 7 |
0
|
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,162
|
||||||
17.01.2019, 10:42 | 8 | |||||
0
|
Неэпический
|
|||||||||||
17.01.2019, 13:25 | 9 | ||||||||||
Использование итератора
end не по назначению приведет к неопределенному поведению.Однако, список может быть построен таким образом, что сам список является узлом, и таким образом список оказывается закольцованным. Абстрактный пример:
В данном списке все узлы, кроме одного, содержат член data . Этот "особенный" узел содержит нужные указатели на первый и последний элементы списка, и является основой итератора end . Так как в этом узле нет члена data , то get_pointer()->data в итераторе приведет к неопределенному поведению.Такие списки достаточно просты и удобны в реализации. Подобным способом реализован список в gcc:
0
|
1536 / 456 / 101
Регистрация: 17.05.2015
Сообщений: 1,424
|
|
17.01.2019, 15:41 | 10 |
0
|
17.01.2019, 15:41 | |
17.01.2019, 15:41 | |
Помогаю со студенческими работами здесь
10
Как реализовать вычисления по формуле без ошибки выхода за пределы массива? Stl map: Как вызвать деструктор мапа Из STL контейнера Как обойти исключение выхода за диапазон при чтении из файла в GridView? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |