|
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
|
|
Стандарты и стили языков программирования01.01.2011, 15:16. Показов 7100. Ответов 41
Метки нет (Все метки)
Занимаясь программирование, например С++, иногда задумываешься, читая различную литературу и разбирая чужие коды программ, что большинство программистов, как начинающих, так и уже вполне опытных, смешивают два разных языка С и С++ (одним языком их никак не назовешь, даже в самом начале изучения). Причем и в университетах (имею ввиду свой) существует дисциплина ЯП С/C++, в которых с самого начала обучения студентов учат программировать на этих двух языках вместе, типа "выбери сам, что ты хочешь". Ведь это не есть хорошо... Получается "адская смесь" - это уже начало раздражать. Да и на форуме, процентов 80%, таких людей хватает... Даже можно привести пример, когда чел на форуме пишет какой-нить код на Си, он выделяет его как код Си++. Потом начинаешь читать, и как-то не хорошо становится - и это самая мелочь!!! =)
Как Вы относитесь к такой проблеме?!
2
|
|
| 01.01.2011, 15:16 | |
|
Ответы с готовыми решениями:
41
Стандарты и регламенты программирования в Lotus 4 и 5 поколения языков программирования |
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||
| 04.01.2011, 16:42 | |||||||||||
|
accept, Насчет вставки. То есть это неудобно? Вставка тут - только две строчки.
0
|
|||||||||||
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||||||||||||||
| 06.01.2011, 07:55 | ||||||||||||||||||
или сначала задать размер строки
а в векторе тем более 2 чтобы он память не занимал когда работаешь с байтами, он не нужен push_back, покажи push_back для заголовка бинарного файла 3 чтобы вывести вектор
а это вообще не одно и тоже, что
4 я имел в виду поместить-то можно, только смысла в этом нет, так как методы string завязаны на нуль-символ с обычными массивами нет этих ограничений, что хочешь, то и помещай туда здесь коллизии
и это ещё кратенько написано
0
|
||||||||||||||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||||||||||
| 06.01.2011, 15:18 | |||||||||||||||||||
|
accept, Задать или использовать push_back.
Добавлено через 42 секунды
0
|
|||||||||||||||||||
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
||||||
| 06.01.2011, 21:47 | ||||||
![]()
0
|
||||||
|
|
||
| 06.01.2011, 22:35 | ||
|
Не вижу проблемы в перемешивании Си и Си++ до тех пор, пока это не выходит на уровень маразма, типа того, что в половине кода используется malloc/free, а в другой половине - new/delete. Хотя в данной теме речь идёт в первую очередь о перемешивании библиотек стандартной поддержки, а не о использовании языка
Вот пример конструкции, который в принципе не пишется на "чистом Си++" https://www.cyberforum.ru/post857620.html. Другой пример - realloc (авторы Си++ как-то не подумали о подобной конструкции). Добавлено через 23 минуты Вот ещё. При перемешивании кодов на Си и Си++ нужно помнить, что есть конструкции, которые по разному трактуются в Си и Си++ https://www.cyberforum.ru/post889495.html https://www.cyberforum.ru/post889587.html
2
|
||
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||||||||||||||||||
| 07.01.2011, 05:01 | |||||||||||||||||||
string
что находится в s и как оно хранится в памяти ? если обращаться к элементам в s по индексам, то индексы будут по-порядку, но индексы - это не память
как он хранится в памяти ? слитно ? он не должен слитно храниться, это ещё строка может быть там хранится слитно, хотя тоже не факт, что при увеличении она не будет в виде фрагментов, а вектор, там вроде можно ещё промежутки оставлять, удаляя элементы
0
|
|||||||||||||||||||
|
Заблокирован
|
|||||
| 07.01.2011, 05:11 | |||||
|
0
|
|||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||||||||||||||||||||||||||||
| 07.01.2011, 05:23 | ||||||||||||||||||||||||||||||||
|
accept, 1) Чтобы в ней не хранилось по данному коду - мы этого не увидим... Зачем писать неверную (в данном случае зацикленную) программу в попытке что-то доказать? Тем более в string ведь можно поместить не бесконечное кол-во символов (как бэ тип size_t у размера контейнера намекает).
2) А зачем к вектору применять memove? Это совершенно другая ступень работы. С обычным массивом - мы работаем с памятью. С вектором - мы работаем с итераторами, которые в данном случае есть удобная обертка указателей. + мы работаем с функциями-членами вроде reserve/push_back/resize etc. Так какой смысл применять к нему memove? + отрывок функции которая используется при реализации вектора.
Впринципе в векторе (и в остальных контейнерах) даже нет напрямую работы с памятью в реализации. Ведь как распределитель используется аллокатор (что есть тоже обертка для более удобного распределения памяти, чего в массивах нету). А теперь - полная иерархия реализации конструктора копирования для вектора.
Добавлено через 5 минут accept,
2
|
||||||||||||||||||||||||||||||||
|
Заблокирован
|
|||||||
| 07.01.2011, 05:24 | |||||||
0
|
|||||||
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||
| 07.01.2011, 06:07 | |||
memove() создаёт буфер, чтобы перекрывающиеся фрагменты правильно копировались, и всё _CRT_SECURE_MEMMOVE то есть к вектору применяется memove(), из чего следует, что он хранится слитно хранится ли он слитно во всех компиляторах ?
0
|
|||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 07.01.2011, 13:55 | |
|
accept, Ну это нужно помсмотреть стандарт... Но я думаю либо это гарантировано либо все зависит от разработчиков
Добавлено через 13 минут Вообщем в стандарте про вектор есть. Страница 482 http://www.kuzbass.ru/docs/ans... 2_1998.pdf Но вот то, что он хранится в памяти подряд - гарантируют итераторы я так понимаю. Иначе невозможно было бы переместить итератор с одного элемент на другой (все же итератор в векторе - обертка над указателем).
0
|
|
| 07.01.2011, 14:10 | |
|
0
|
|
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||
| 07.01.2011, 14:25 | |||
|
C89 memmove
там есть ещё memcpy(), вот она для неперекрывающихся
когда из вектора нужно удалить элементы не с начала и не с конца, memmove() там явно не применима, даже если вектор хранит элементы слитно, потому что нужно менять переменные, отвечающие за его длину и так далее Не по теме:
0
|
|||
| 07.01.2011, 14:32 | |
Сообщение было отмечено как решение
РешениеНе по теме: accept, вот один из вариантов реализации memmove: http://www.student.cs.uwaterlo... ource.html
4
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||||||||||||||||||||||||||||||||
| 08.01.2011, 00:04 | ||||||||||||||||||||||||||||||||||||
|
accept, Надо просто посмотреть на реализацию erase. Когда я сам писал вектор - я удалял элементы через
Добавлено через 5 часов 34 минуты Вот erase векторовский.
0
|
||||||||||||||||||||||||||||||||||||
|
|
||
| 08.01.2011, 00:23 | ||
|
Все, что гарантирует стандарт так это последовательное хранение элементов, как в обычном массиве, следовательно обращаться к элементам можно, как к элементам массива. Но это не значит, что можно тасовать области памяти, как душе угодно. По поводу споров о векторах и массивах, мое мнение такое, там где можно использовать массив статического размера, пусть будут именно такие массивы, где требуется динамическое распределение памяти, лучше использовать вектор.
0
|
||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 08.01.2011, 00:25 | |
|
fasked, memmove используется в самом векторе. см. выше.
0
|
|
| 08.01.2011, 08:39 | ||
|
Не по теме:
нигде в нете ссылки на американцев не видно
0
|
||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 08.01.2011, 14:02 | |
|
accept, э. Стандарт С++ набери в яндексе/гугле
Первая же ссылка - ссыль на форум - первое же сообщение ссыль на стандарт
0
|
|
| 08.01.2011, 14:02 | |
|
Разработка языков программирования Сравнение Языков Программирования Сколько языков программирования в кс 1.6 ? Семантика языков программирования Теория языков программирования Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2.
Задача:
Обеспечить запись документа в регистр сведений независимо от. . .
|
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется.
Ну как вам?
|
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания
источниках данных и элементов формы(текстовые поля и метки), опирается все
это на технологию событий и мета. . .
|