Форум программистов, компьютерный форум CyberForum.ru

Неясности в теории - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывод интервального ряда в виде таблицы http://www.cyberforum.ru/cpp-beginners/thread1549851.html
Имеется информация о количестве книг, полученных студентами по абонементу за прошедший учебный год. Массив чисел: 4 интервала --------------------------------------------------------------- 2 4 4 7 6 5 2 2 3 4 4 3 6 5 4 7 6 6 5 3 2 4 2 3 5 7 4 3 3 2 4 5 6 6 10 4 3 3 2 3 ----------------------------------------------------------------
C++ Узнать сколько символов осталось во входной очереди после cin Доброго времени суток, подскажите пожалуйста как узнать, сколько символов осталось во входной очереди (скажем после неудачного использования cin). При этом cin.get() нельзя применять, ибо эти символы нужно будет еще использовать. http://www.cyberforum.ru/cpp-beginners/thread1549831.html
Узнать скорость записи в файл C++
Планирую работать с записью в файл больших объёмов. Хотелось бы узнать скорость записи. Мб для теста использовать вечный цикл и забивать файл одиночными символами и по достижении секунды выйти из него записав количество символов и выйдет результат. Ещё как ускорить этот процесс? Гуглил, что Сишные варианты работы с файлами работают быстрее, чем Плюсовые.
не работает код из книги класс C++
сейчас учусь программированию по книге и дошел до классов. суть классов немного разобрался, но почему то методы класса не работают. хотя переписал все по книге. книга джесс либерти. освой самостоятельно с++ за 21 день. компилятор visual studio 2013. П.С. это маленкий участок кода большей программы и не обращайте внимания на библиотеки и структуры. учусь 4 недели. вот код. #include...
C++ Поиск каталогов http://www.cyberforum.ru/cpp-beginners/thread1549811.html
Как реализовать функцию, находящую на диске все каталоги?
C++ Функциональный объект и подсчёт определённых значений в векторе Необходимо реализовать подсчёт количества элементов вектора, больших некоторого значения (вводится с клавиатуры), используя функтор. #include "stdafx.h" using namespace std; int i = 0; vector<int> vec_data(10); class Functor { подробнее

Показать сообщение отдельно
hoggy
5428 / 2227 / 411
Регистрация: 15.11.2014
Сообщений: 5,021
Завершенные тесты: 1
12.10.2015, 20:36     Неясности в теории
Цитата Сообщение от mporro Посмотреть сообщение
Как передать массив в функцию, чтобы все побочные эффекты работы с массивом внутри функции не затронули внешний контекст
там где то выше был пример передачи по значению за счет промежуточной структуры.

Цитата Сообщение от gru74ik Посмотреть сообщение
Либо пользоваться средствами нового стандарта (C++14), как это сделал hoggy (передавать ссылку или указатель и использовать ключевое слово auto).
не обязательно использовать auto.
auto - это лишь синтаксический сахар.
выше где то были мои примеры,
как получить такой же результат при помощи "классических" шаблонов.

если же количество элементов прибито гвоздями,
то можно передавать ссылку/указатель на массив без всяких шаблонов.

Цитата Сообщение от mporro Посмотреть сообщение
Нет, это не то. Вы передали в функцию структуру, совершенно иной объект. Структура действительно скопируется, но это уже данные, определённые пользователем.
формально, нельзя передавать массивы по значению.
но это - не более чем формальность.

отталкиваться то нужно от задачи.
можно например на шаблонах поиметь нужный эффект,
без необходимости порождать пользовательскую структуру в клиентском коде:

Цитата Сообщение от gru74ik Посмотреть сообщение
а заполнить массив новыми значениями в такой же манере получится?
в какой, в такой же?

Добавлено через 2 минуты
Цитата Сообщение от gru74ik Посмотреть сообщение
честно сказать, я тоже не понял, как указатель может хранить (помнить?) размер массива. Насколько я знаю, обычный сишный указатель хранит адрес и ничего более.
верно.
ключевые слова "обычный сишный указатель".

"указатель на массив" - это не "обычный сишный указатель".

C++
1
2
3
int ar[] ={1,2};
int* p = ar; //<--- указатель на int (не намассив)
int (*pa)[2] = &ar ; //<--- указатель на массив
указатель на массив хранит информацию о природе массива в своем типе.

Добавлено через 5 минут
Цитата Сообщение от mporro Посмотреть сообщение
К тому и вопросы пошли. Указатель -- это, всё-таки, указатель, адрес. А его типовая метка отвечает за проверку времени компиляции. Но никто ничего не хранит.
указатель - это тип данных.
адрес - это значение объекта имеющего тип данных "указатель".

понятно, что "циферки" ничего не хранят.
но это не принципиально.

принципиально, что в статике можно пропасти тип указателя-на-массив,
и поиметь информацию о его размерностях.

с++ позволяет много различной нужной информации извлекать времени компиляции.
 
Текущее время: 17:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru