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

142
путаница преобразования stringstream, string и char *

Мой вопрос можно свести к следующему: где строка, возвращенная из stringstream.str().c_str()памяти, находится в памяти и почему ее нельзя присвоить a const char*? Этот пример кода объяснит это лучше, чем я могу #include <string> #include <sstream> #include <iostream> using...

142
_DEBUG против NDEBUG

Какое определение препроцессора следует использовать для указания отладочных разделов кода? Используйте #ifdef _DEBUGили #ifndef NDEBUGили есть лучший способ сделать это, например #define MY_DEBUG? Я думаю, что _DEBUGVisual Studio специфичен, стандарт...

142
Является ли передача по значению разумным значением по умолчанию в C ++ 11?

В традиционном C ++ передача по значению в функции и методы является медленной для больших объектов и обычно не одобряется. Вместо этого программисты на C ++ стремятся передавать ссылки, что быстрее, но при этом возникает множество сложных вопросов, касающихся владения и особенно управления памятью...

142
Какого типа лямбда-выражения выводятся с помощью «auto» в C ++ 11?

У меня было ощущение, что тип лямбда - это указатель на функцию. Когда я выполнил следующий тест, я обнаружил, что это неправильно ( демо ). #define LAMBDA [] (int i) -> long { return 0; } int main () { long (*pFptr)(int) = LAMBDA; // ok auto pAuto = LAMBDA; // ok assert(typeid(pFptr) ==...

142
Как создать общую библиотеку с помощью cmake?

Я написал библиотеку, которую использовал для компиляции, используя самописный Makefile, но теперь я хочу перейти на cmake. Дерево выглядит следующим образом (я удалил все ненужные файлы): . ├── include │   ├── animation.h │   ├── buffers.h │   ├── ... │   ├── vertex.h │   └── world.h └── src ├──...

142
Является ли #pragma когда-то частью стандарта C ++ 11?

Традиционно стандартным и переносимым способом избежать включения нескольких заголовков в C ++ было использование #ifndef - #define - #endifсхемы директив предварительного компилятора, также называемой схемой защиты от макросов (см. Фрагмент кода ниже). #ifndef MY_HEADER_HPP #define MY_HEADER_HPP...

142
Почему неравенство проверяется как (! (A == b)) во многих кодах стандартной библиотеки C ++?

Это код из стандартного removeкода библиотеки C ++ . Почему неравенство проверяется if (!(*first == val))вместо if (*first != val)? template <class ForwardIterator, class T> ForwardIterator remove (ForwardIterator first, ForwardIterator last, const T& val) { ForwardIterator result =...

141
Создание собственных итераторов

Я пытаюсь изучить C ++, так что простите меня, если этот вопрос демонстрирует отсутствие базовых знаний, понимаете, факт в том, что мне не хватает базовых знаний. Мне нужна помощь в разработке итератора для созданного мной класса. У меня есть класс «Форма», в котором есть контейнер точек. У меня...

141
Лучшая документация для Boost: asio?

Документация, доступная на веб-сайте boost, ... ограничена. Судя по тому, что я смог прочитать, общее мнение сводится к тому, что найти хорошую документацию по библиотеке boost :: asio просто сложно. Так ли это на самом деле? Если да, то почему? Примечания: Я уже нашел (не повышающий) веб-сайт...

141
Что лучше: указатели или ссылки в данных-членах?

Это упрощенный пример, иллюстрирующий вопрос: class A {}; class B { B(A& a) : a(a) {} A& a; }; class C { C() : b(a) {} A a; B b; }; Итак, B отвечает за обновление части C. Я запустил код через lint, и он пожаловался на элемент ссылки: lint # 1725 . Здесь говорится о заботе о копировании и...

141
Статические виртуальные члены с ++?

Возможно ли в C ++ иметь функцию-член одновременно staticи virtual? По-видимому, нет простого способа сделать это ( static virtual member();это ошибка компиляции), но есть ли хотя бы способ добиться того же эффекта? IE: struct Object { struct TypeInformation; static virtual const TypeInformation...

141
Что я могу сделать с перемещенным объектом?

Определяет ли стандарт точно, что я могу делать с объектом после его перемещения? Раньше я думал, что все, что вы можете сделать с перемещенным объектом, - это уничтожить его, но этого было бы недостаточно. Например, возьмите шаблон swapфункции, определенный в стандартной библиотеке: template...

141
Должен ли я передать std :: function по const-reference?

Допустим, у меня есть функция, которая принимает std::function: void callFunction(std::function<void()> x) { x(); } Должен ли я пройти xпо const-reference вместо этого ?: void callFunction(const std::function<void()>& x) { x(); } Меняется ли ответ на этот вопрос в зависимости от...

140
Какие новые возможности добавляют в C ++ определяемые пользователем литералы?

C ++ 11 вводит определяемые пользователем литералы , которые позволят введение нового буквального синтаксиса на основе существующих литералов ( int, hex, string, float) , так что любой тип будет иметь возможность буквального представления. Примеры: // imaginary numbers std::complex<long...

140
Итерация по вектору C ++ с использованием цикла for

Я новичок в языке C ++. Я начал использовать векторы и заметил, что во всем коде, который я вижу, для итерации по вектору через индексы, первый параметр forцикла всегда основан на векторе. В Java я мог бы сделать что-то вроде этого с ArrayList: for(int i=0; i < vector.size(); i++){...