Здравствуйте, Erop, Вы писали:
E>Так что там у теюя выходит? const_iterator -- неконстантный, или T const*, таки константный? Или между ними есть какая-то принципиальная разница в семантике?
Ну например:
std::vector<int>::const_iterator i;
const int* j = i; // Error!const int* j = &*i; // Okconst int* k = j; // Ok
i = k; // Error!
j = k; // Ok
Еще раз: const_iterator — это объект, а T const* — это указатель
Здравствуйте, goondick, Вы писали:
G>более десяти лет писал несколько больших и маленких проектов на си++, ни разу не использовал константные указатели на неконстантные обьекты. У меня есть смутные сомнения, что квалификация программиста не меряется знанием такой замороченной сишной мути.
Это не муть, а элементарное удобство, которое потенциально позволит придушить баг в зародыше:
char* const buffer_begin = ...; // Константный указатель на начало буфера. Содержимое буфера можно изменить, сдвинуть нечаянно сам указатель - нет
Здравствуйте, 11molniev, Вы писали:
1>Ну не знаю. Голосавания и статьи там бред конечно, но вот коменты читать очень весело. Поднимает настроение. 1>Так что мой любимый сайт для отдыха))))
Нравится смотреть как школьники какашками бросаются?
Здравствуйте, MTD, Вы писали:
1>>Ну не знаю. Голосавания и статьи там бред конечно, но вот коменты читать очень весело. Поднимает настроение. MTD>Нравится смотреть как школьники какашками бросаются? :xz:
Будет вам. Ну откуда же ещё, как не из этого замечательного ресурса, мы узнаем, как студенты-первокуры решают свои лабы по информатике, или, например, что думают по поводу авторского права их более молодые товарищи?
Здравствуйте, MTD, Вы писали:
MTD>Здравствуйте, мыщъх, Вы писали:
М>>а чем отличается "ссылка на константу"
MTD>Тем, что так бывает.
М>>от "константа на ссылку" ?
MTD>А так нет.
а давайте добавим это в язык и тогда будет
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, MTD, Вы писали:
MTD>std::vector<T>::const_iterator — это объект-итератор частично повторяющий поведение указателя константный объект типа T, const T* — это указатель на константный объект типа T. Больше в букваре написано
Ну ты const_iterator как называешь-то? Особенно если по-английски общаешься? "Constant iterator" or "iterator of constants"?
И как по-русски?..
Я вот ни разу не встречал, чтобы были разночтения. "Константный итератор" -- это всегда итератор, который не позволяет менять данные к которым даёт доступ, и никак иначе. Надеюсь в твоём окружении ситуация в точности такая же. И если это так, то в чём разница между указателями и итераторами?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, MTD, Вы писали:
MTD>Еще раз: const_iterator — это объект, а T const* — это указатель
Трудно тебе, наверное программировать-то в команде. Или ты фрилансер?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Ну ты const_iterator как называешь-то? Особенно если по-английски общаешься? "Constant iterator" or "iterator of constants"?
Дословно, то есть std const iterator. Название не самое удачное, согласен.
E>И как по-русски?..
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, MTD, Вы писали:
MTD>>Еще раз: const_iterator — это объект, а T const* — это указатель
E>Трудно тебе, наверное программировать-то в команде.
Здравствуйте, MTD, Вы писали:
MTD>Дословно, то есть std const iterator. Название не самое удачное, согласен.
О! я тоже против использования описательной терминологии! Но тут спор за то, что типа "константный указатель" -- это не указатель, который не даёт менять указуемое, а указатель, который нельзя менять сам по себе.
Я сослался на то, что со сылками всё определено вообще в стандарте, но оппоненты высказали довод, что ссылку менять всё равно нельзя, в отличии от указателя. Тогда я предложил объяснить мне, почему в итераторах константный итератор -- это тоже итератр, который не даёт менять итерируемые объекты, а вовсе и не итератор, который нелья итерировать...
В общем флейм.
E>>И как по-русски?..
MTD>Стд конст итератор
А почему стд, а не вектор?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Q>Будет вам. Ну откуда же ещё, как не из этого замечательного ресурса, мы узнаем, как студенты-первокуры решают свои лабы по информатике, или, например, что думают по поводу авторского права их более молодые товарищи?
Здравствуйте, Eye of Hell, Вы писали:
Q>>Будет вам. Ну откуда же ещё, как не из этого замечательного ресурса, мы узнаем, как студенты-первокуры решают свои лабы по информатике, или, например, что думают по поводу авторского права их более молодые товарищи?
EOH>http://habrahabr.ru/blogs/cpp/54762/ EOH>Это похоже на лабу по информатике? Или цикл статей про статический анализ C++?
Все эти вещи затеряются в потоке постов про придумывание паролей и лажовые бенчмарки, как слёзы в каплях дождя.
char* const buffer_begin = ...; // Константный указатель на начало буфера. Содержимое буфера можно изменить, сдвинуть нечаянно сам указатель - нет
Хороший пример, но тоже редко встречающийся. Тут проблема путаницы понятий "объект-вуфер" и "объект-итератор" (указатель на начало). Это проблема самого языка и его базовых типов, проблема несовместимости абстракций языка и абстракций предметной области.
G>>более десяти лет писал несколько больших и маленких проектов на си++, ни разу не использовал константные указатели на неконстантные обьекты. У меня есть смутные сомнения, что квалификация программиста не меряется знанием такой замороченной сишной мути.
MTD>Это не муть, а элементарное удобство, которое потенциально позволит придушить баг в зародыше:
MTD>
MTD>char* const buffer_begin = ...; // Константный указатель на начало буфера. Содержимое буфера можно изменить, сдвинуть нечаянно сам указатель - нет
MTD>
Только одному мне кажется, что это не удобство, а костыль?