1

Тема: Ітератори

потрібне пояснення для ітератора *а++ та код у якому застосовується цей ітератор

2

Re: Ітератори

Для пояснень по коду нам знадобиться - несподівано - КОД. А також ваші питання, щоб ми знали, що вам пояснювати. І питання мають бути поставлені так, щоб було зрозуміло, що ви вже щось на цю тему прочитали, бо якщо ви не намагалися читати те, що доступно в мережі (а доступно досить багато), то який сенс вам ще щось писати? От якщо ви прочитали, але не можете чомусь співставити прочитане із кодом, тоді можна буде щось відповідати.

3 Востаннє редагувалося koala (02.05.2018 17:01:33)

Re: Ітератори

Краще шукайте iнший форум (або гуглiть).
Бо тут навряд буде хтось хто захоче пояснити.

може допоможе

Як вам тут розпишуть що таке iтератор то в мене щелепа впаде.

4

Re: Ітератори

Видалив офтоп. Ну нащо так робити?

5 Востаннє редагувалося Fox (02.05.2018 17:17:30)

Re: Ітератори

koala написав:

Видалив офтоп. Ну нащо так робити?

Який офтоп -_-
Ааа... Ну почалося....
Кудах, але я шукав таке i знайшов пор....

фото

https://i.imgur.com/Rx9DLc4.png

Коала, зробiть блiн свiй збiрник вiдео урокiв по С++, C#, JS, HTML + CSS... (не подумайте, що це критика або щось таке. Було би прикольно мати збiрку урокiв в яких все дуже детально пояснили).
Бо тi хто створив акаунт заради питання по ДЗ навряд знають англiйську.

Подякували: P.Y.1

6

Re: Ітератори

я не мав на увазі що означає ітератор я мав на увазі вираз *а++ у бібліотеці ітератора

7

Re: Ітератори

дізнайтесь спершу що роблять оператори *(окрім множення) та ++ без прив'язки до ітераторів

8

Re: Ітератори

teri написав:

я не мав на увазі що означає ітератор я мав на увазі вираз *а++ у бібліотеці ітератора

Це перехiд но наступного елементу контейнера (наче).

9

Re: Ітератори

Якщо a - екземпляр класу iterator стандартної бібліотеки шаблонів (STL), то вираз *a++ - це "переміщення" ітератора на наступний елемент (a++) і "розадресація" ітератора (*a). Саме в такій послідовності, бо оператор ++ має вищий пріоритет ніж оператор *.

Тут грано описано все, що потрібно знати про ітератори. Навіть якщо не знаєте англійської мови, то перегляньте код і таблиці.

Подякували: koala2

10

Re: Ітератори

тоді навіщо його додали до цієї таблиці http://www.cplusplus.com/reference/iterator/?

11

Re: Ітератори

teri, ітератори бувають різних типів, в таблиці роз'яснюється які властивості має кожен із типів.

12

Re: Ітератори

В C та C++ є два способи ітерувати крізь масив: індексами

int arr[max];
...
for(size_t i=0;i<max;++i) {
    printf("%d",arr[i]);
}

та вказівниками

for(int *i=std::begin(arr);i<std::end(arr);++i) {
    printf("%d",*i);
}

Другий спосіб має певні переваги, зокрема вказівник i містить інформацію і про поточний стан ітерації, і про поточний об'єкт в масиві (через оператор *). Це, при певному рівні програміста, покращує читаність і зменшує ймовірність помилки всередині циклу (в першому випадку доводиться вказувати дві змінні - arr та i, а в другому - тільки i).
Але масиви - це не єдині колекції в C++. Для set-ів, map-ів і т.д. теж хочеться мати засіб для ітерування, і бажано, уніформний з масивами, щоб код для ітерування можна було застосовувати для різних колекцій з мінімальними змінами. Номери для них дуже незручні (обчислення, який елемент в set-і 8-й, потребує окремого циклу), а у вказівників не працює оператор ++ - від простого збільшення вказівника на елемент list-а ми потрапимо на казна-що, а не на наступний елемент. Тому створені окремі об'єкти - ітератори, які, як і вказівники, містять інформацію як про поточний стан, так і про поточний об'єкт. І оператори ++ та * для них працюють схоже на те, як вони працюють із вказівниками: * повертає поточний об'єкт (посиланням), а ++ переходить на наступний об'єкт ітерації. Відповідно, якщо *a++ для вказівника означає "збільшити вказівник на розмір даних та повернути дані, на які він вказував до збільшення", то цей вираз для ітератора означає "перейти на наступний об'єкт ітерації і повернути посилання на той, який був до переходу".
А в табличці цей вираз робить рівно те, що написано в заголовку: ілюструє коректний вираз для ітератора.

Подякували: P.Y., Fox, leofun014