Re[6]: T const *
От: MTD https://github.com/mtrempoltsev
Дата: 02.02.12 06:25
Оценка: :)
Здравствуйте, Erop, Вы писали:

E>Так что там у теюя выходит? const_iterator -- неконстантный, или T const*, таки константный? Или между ними есть какая-то принципиальная разница в семантике?


Ну например:


std::vector<int>::const_iterator i;
const int* j = i; // Error!
const int* j = &*i; // Ok
const int* k = j; // Ok
i = k; // Error!
j = k; // Ok


Еще раз: const_iterator — это объект, а T const* — это указатель
Re[2]: За что мы любим Хабрахабр?
От: MTD https://github.com/mtrempoltsev
Дата: 02.02.12 06:31
Оценка: 1 (1) +2
Здравствуйте, goondick, Вы писали:

G>более десяти лет писал несколько больших и маленких проектов на си++, ни разу не использовал константные указатели на неконстантные обьекты. У меня есть смутные сомнения, что квалификация программиста не меряется знанием такой замороченной сишной мути.


Это не муть, а элементарное удобство, которое потенциально позволит придушить баг в зародыше:


char* const buffer_begin = ...; // Константный указатель на начало буфера. Содержимое буфера можно изменить, сдвинуть нечаянно сам указатель - нет
Re[2]: За что мы любим Хабрахабр?
От: MTD https://github.com/mtrempoltsev
Дата: 02.02.12 06:32
Оценка:
Здравствуйте, 11molniev, Вы писали:

1>Ну не знаю. Голосавания и статьи там бред конечно, но вот коменты читать очень весело. Поднимает настроение.

1>Так что мой любимый сайт для отдыха))))

Нравится смотреть как школьники какашками бросаются?
Re[4]: const_iterator
От: MTD https://github.com/mtrempoltsev
Дата: 02.02.12 06:34
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>а чем отличается "ссылка на константу"


Тем, что так бывает.

М>от "константа на ссылку" ?


А так нет.
Re[3]: За что мы любим Хабрахабр?
От: Qbit86 Кипр
Дата: 02.02.12 06:38
Оценка:
Здравствуйте, MTD, Вы писали:

1>>Ну не знаю. Голосавания и статьи там бред конечно, но вот коменты читать очень весело. Поднимает настроение.

MTD>Нравится смотреть как школьники какашками бросаются? :xz:

Будет вам. Ну откуда же ещё, как не из этого замечательного ресурса, мы узнаем, как студенты-первокуры решают свои лабы по информатике, или, например, что думают по поводу авторского права их более молодые товарищи?
Глаза у меня добрые, но рубашка — смирительная!
Re[5]: const_iterator
От: мыщъх США http://nezumi-lab.org
Дата: 02.02.12 06:55
Оценка:
Здравствуйте, 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.
Re[6]: const_iterator
От: MTD https://github.com/mtrempoltsev
Дата: 02.02.12 06:55
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>а давайте добавим это в язык и тогда будет


Не надо — и так всего много
Re[5]: Буквари в топку.
От: Erop Россия  
Дата: 02.02.12 06:58
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>std::vector<T>::const_iterator — это объект-итератор частично повторяющий поведение указателя константный объект типа T, const T* — это указатель на константный объект типа T. Больше в букваре написано


Ну ты const_iterator как называешь-то? Особенно если по-английски общаешься? "Constant iterator" or "iterator of constants"?

И как по-русски?..

Я вот ни разу не встречал, чтобы были разночтения. "Константный итератор" -- это всегда итератор, который не позволяет менять данные к которым даёт доступ, и никак иначе. Надеюсь в твоём окружении ситуация в точности такая же. И если это так, то в чём разница между указателями и итераторами?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[7]: T const *
От: Erop Россия  
Дата: 02.02.12 06:59
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>Еще раз: const_iterator — это объект, а T const* — это указатель


Трудно тебе, наверное программировать-то в команде. Или ты фрилансер?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: Буквари в топку.
От: MTD https://github.com/mtrempoltsev
Дата: 02.02.12 07:02
Оценка:
Здравствуйте, Erop, Вы писали:

E>Ну ты const_iterator как называешь-то? Особенно если по-английски общаешься? "Constant iterator" or "iterator of constants"?


Дословно, то есть std const iterator. Название не самое удачное, согласен.

E>И как по-русски?..


Стд конст итератор
Re[8]: T const *
От: MTD https://github.com/mtrempoltsev
Дата: 02.02.12 07:04
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, MTD, Вы писали:


MTD>>Еще раз: const_iterator — это объект, а T const* — это указатель


E>Трудно тебе, наверное программировать-то в команде.


Нормально.

E>Или ты фрилансер?


Нет.
Re[7]: Буквари в топку.
От: Erop Россия  
Дата: 02.02.12 07:09
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>Дословно, то есть std const iterator. Название не самое удачное, согласен.


О! я тоже против использования описательной терминологии! Но тут спор за то, что типа "константный указатель" -- это не указатель, который не даёт менять указуемое, а указатель, который нельзя менять сам по себе.
Я сослался на то, что со сылками всё определено вообще в стандарте, но оппоненты высказали довод, что ссылку менять всё равно нельзя, в отличии от указателя. Тогда я предложил объяснить мне, почему в итераторах константный итератор -- это тоже итератр, который не даёт менять итерируемые объекты, а вовсе и не итератор, который нелья итерировать...
В общем флейм.

E>>И как по-русски?..


MTD>Стд конст итератор


А почему стд, а не вектор?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: За что мы любим Хабрахабр?
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 02.02.12 07:27
Оценка:
Q>Будет вам. Ну откуда же ещё, как не из этого замечательного ресурса, мы узнаем, как студенты-первокуры решают свои лабы по информатике, или, например, что думают по поводу авторского права их более молодые товарищи?

http://habrahabr.ru/blogs/cpp/54762/

Это похоже на лабу по информатике? Или цикл статей про статический анализ C++?
Re[8]: Буквари в топку.
От: MTD https://github.com/mtrempoltsev
Дата: 02.02.12 07:33
Оценка:
Здравствуйте, Erop, Вы писали:

E>В общем флейм.


Согласен.

E>>>И как по-русски?..


MTD>>Стд конст итератор


E>А почему стд, а не вектор?


Речь же шла просто об итераторе, без привязки к контейнеру, потому так.
Re[5]: Исключения
От: Qbit86 Кипр
Дата: 02.02.12 07:35
Оценка:
Здравствуйте, Eye of Hell, Вы писали:

Q>>Будет вам. Ну откуда же ещё, как не из этого замечательного ресурса, мы узнаем, как студенты-первокуры решают свои лабы по информатике, или, например, что думают по поводу авторского права их более молодые товарищи?


EOH>http://habrahabr.ru/blogs/cpp/54762/

EOH>Это похоже на лабу по информатике? Или цикл статей про статический анализ C++?

Все эти вещи затеряются в потоке постов про придумывание паролей и лажовые бенчмарки, как слёзы в каплях дождя.
Глаза у меня добрые, но рубашка — смирительная!
Re[5]: За что мы любим Хабрахабр?
От: MTD https://github.com/mtrempoltsev
Дата: 02.02.12 07:38
Оценка: +1
Здравствуйте, Eye of Hell, Вы писали:

EOH>Это похоже на лабу по информатике? Или цикл статей про статический анализ C++?


Похоже на статью для новичков в C++
Re: За что мы любим Хабрахабр?
От: Dym On Россия  
Дата: 02.02.12 08:18
Оценка: +1
Q>

Константный указатель на неконстантный объект это:

Такие вопросы теперь голосованием решаются ? Жду голосования по таблице умножения
Счастье — это Glück!
Re[3]: За что мы любим Хабрахабр?
От: fin_81  
Дата: 02.02.12 08:39
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>
char* const buffer_begin = ...; // Константный указатель на начало буфера. Содержимое буфера можно изменить, сдвинуть нечаянно сам указатель - нет


Хороший пример, но тоже редко встречающийся. Тут проблема путаницы понятий "объект-вуфер" и "объект-итератор" (указатель на начало). Это проблема самого языка и его базовых типов, проблема несовместимости абстракций языка и абстракций предметной области.

Буфер это скорее всего или-или:
char buffer[];
vector<char> buffer;
smart_array<char> buffer;

При таком объявлении к буферу нельзя применить адресную арифметику, сам буфер и его свойство "начало буфера" нельзя изменить.
Re[3]: За что мы любим Хабрахабр?
От: Mamut Швеция http://dmitriid.com
Дата: 02.02.12 08:42
Оценка:
G>>более десяти лет писал несколько больших и маленких проектов на си++, ни разу не использовал константные указатели на неконстантные обьекты. У меня есть смутные сомнения, что квалификация программиста не меряется знанием такой замороченной сишной мути.

MTD>Это не муть, а элементарное удобство, которое потенциально позволит придушить баг в зародыше:



MTD>
MTD>char* const buffer_begin = ...; // Константный указатель на начало буфера. Содержимое буфера можно изменить, сдвинуть нечаянно сам указатель - нет
MTD>



Только одному мне кажется, что это не удобство, а костыль?


dmitriid.comGitHubLinkedIn
Re[2]: За что мы любим Хабрахабр?
От: dilmah США  
Дата: 02.02.12 08:52
Оценка: :)))
_>Вот поэтому я и бросил C++.

молодец, а если теперь в него кто-нибудь наступит?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.