Вопросы с тегом «c++»

C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который будет скомпилирован с помощью компилятора C ++). Используйте тег, зависящий от версии, для вопросов, связанных с конкретной редакцией стандарта [C ++ 11], [C ++ 14], [C ++ 17] или [C ++ 20] и т. Д.

5
Как правильно добавить включаемые каталоги с CMake
Около года назад я спросил о зависимостях заголовка в CMake . Недавно я понял, что проблема заключается в том, что CMake считает эти файлы заголовков внешними по отношению к проекту. По крайней мере, при генерации проекта Code :: Blocks заголовочные файлы не появляются внутри проекта (исходные файлы делают). Поэтому мне …
243 c++  ubuntu  cmake 

1
Какова цель std :: launder?
P0137 представляет шаблон функции std::launderи вносит множество изменений в стандарт в разделах, касающихся объединений, времени жизни и указателей. Какую проблему решает эта статья? Какие изменения в языке я должен знать? И что мы думаем launder?

21
Возврат нескольких значений из функции C ++
Есть ли предпочтительный способ вернуть несколько значений из функции C ++? Например, представьте себе функцию, которая делит два целых числа и возвращает как частное, так и остаток. Один из способов, которые я обычно вижу, это использование опорных параметров: void divide(int dividend, int divisor, int& quotient, int& remainder); Вариант состоит в …
242 c++ 


12
Как быстро записать большой буфер в двоичный файл на C ++?
Я пытаюсь записать огромное количество данных на мой SSD (твердотельный накопитель). И в огромных количествах я имею в виду 80 ГБ. Я просматривал в Интернете решения, но лучшее, что я придумал, было это: #include <fstream> const unsigned long long size = 64ULL*1024ULL*1024ULL; unsigned long long a[size]; int main() { std::fstream …

6
Почему используются безымянные пространства имен и каковы их преимущества?
Я только что присоединился к новому программному проекту C ++, и я пытаюсь понять дизайн. Проект часто использует безымянные пространства имен. Например, что-то подобное может произойти в файле определения класса: // newusertype.cc namespace { const int SIZE_OF_ARRAY_X; const int SIZE_OF_ARRAY_Y; bool getState(userType*,otherUserType*); } newusertype::newusertype(...) {... Каковы конструктивные соображения, которые могут …
242 c++  oop  namespaces 

21
Как проверить, начинается ли строка C ++ std :: string с определенной строки, и преобразовать подстроку в int?
Как реализовать следующее (псевдокод Python) в C ++? if argv[1].startswith('--foo='): foo_value = int(argv[1][len('--foo='):]) (Например, если argv[1]есть --foo=98, то foo_valueесть 98.) Обновление: я не решаюсь взглянуть на Boost, так как я просто смотрю на внесение очень небольших изменений в простой маленький инструмент командной строки (я бы предпочел не изучать, как подключаться …

4
(-2147483648> 0) возвращает true в C ++?
-2147483648 - это наименьшее целое число для целочисленного типа с 32 битами, но кажется, что оно будет переполнено в if(...)предложении: if (-2147483648 > 0) std::cout << "true"; else std::cout << "false"; Это напечатает trueв моем тестировании. Однако, если мы приведем -2147483648 к целому числу, результат будет другим: if (int(-2147483648) > …



6
Как правильно реализовать пользовательские итераторы и const_iterators?
У меня есть пользовательский класс контейнера , для которого я хотел бы написать iteratorи const_iteratorклассы. Я никогда не делал этого раньше, и мне не удалось найти подходящее руководство. Каковы рекомендации по созданию итераторов, и что я должен знать? Я также хотел бы избежать дублирования кода (я чувствую это const_iteratorи iteratorделюсь …

10
Как суммировать элементы вектора C ++?
Каковы хорошие способы найти сумму всех элементов в std::vector? Предположим, у меня есть вектор std::vector<int> vectorс несколькими элементами. Теперь я хочу найти сумму всех элементов. Каковы разные способы для того же?
240 c++  stl  vector 

8
Можно ли объявить две переменные разных типов в цикле for?
Можно ли объявить две переменные разных типов в теле инициализации цикла for в C ++? Например: for(int i=0,j=0 ... определяет два целых числа Могу ли я определить intи charв теле инициализации? Как это будет сделано?

12
Можете ли вы удалить элементы из списка std :: list, просматривая его?
У меня есть код, который выглядит так: for (std::list<item*>::iterator i=items.begin();i!=items.end();i++) { bool isActive = (*i)->update(); //if (!isActive) // items.remove(*i); //else other_code_involving(*i); } items.remove_if(CheckItemNotActive); Я хотел бы удалить неактивные элементы сразу после их обновления, чтобы избежать повторного просмотра списка. Но если я добавляю закомментированные строки, я получаю сообщение об ошибке i++: …
239 c++  list  std 

27
Зачем использовать итераторы вместо индексов массивов?
Возьмите следующие две строки кода: for (int i = 0; i < some_vector.size(); i++) { //do stuff } И это: for (some_iterator = some_vector.begin(); some_iterator != some_vector.end(); some_iterator++) { //do stuff } Мне сказали, что второй способ предпочтительнее. Почему именно это?

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.