c++- все статьи тега ➜ страница 29
Возвращает ссылку на объект, а не копия
во время рефакторинга некоторого кода я наткнулся на некоторые методы getter, которые возвращают std::string. Что-то вроде этого например: class foo { private: std::string name_; public: std::string name() { return name_; } }; конечно, геттер будет лучше возвращать a const std::string&? Текущий метод возвращает копию, которая не так эффективно. Будет ли возврат ссылки const вместо этого вызывать какие-либо проблемы? ...
Должен ли я использовать double или float?
каковы преимущества и недостатки использования одного вместо другого в C++? ...
Советы по пространствам имен C++
Я просто учу себя пространствам имен C++ (исходя из фона C#), и я действительно начинаю думать, что даже со всеми вещами, которые C++ делает лучше, чем большинство других языков, вложенные пространства имен не являются одним из них! Я прав, думая, что для объявления некоторых вложенных пространств имен я должен сделать следующее: namespace tier1 { namespace tier2 { namespace tier3 { /* then start your normal code nesting */ } } } против: nam ...
Как построить полную строку пути (безопасно) из отдельных строк?
имеет ли C++ какой-либо эквивалент функции python os.path.join? В принципе, я ищу что-то, что объединяет две (или более) части пути к файлу, так что вам не нужно беспокоиться о том, чтобы две части идеально сочетались друг с другом. Если это в Qt, это тоже было бы круто. в основном я потратил час отладки кода и по крайней мере часть ее, потому что root + filename должен быть root/ + filename, и я ищу, чтобы избежать этого в будущем. ...
Является использование assert() в C++ плохой практикой?
Я обычно добавляю много утверждений в свой код C++, чтобы упростить отладку, не влияя на производительность сборок выпуска. Теперь,assert Это чистый макрос C, разработанный без механизмов C++ в виду. в C++ с другой стороны определяет std::logic_error, который должен быть брошен в тех случаях, когда есть ошибка в логике программы (отсюда и название). Бросание экземпляра может быть просто идеальной, более C++ish альтернативой assert. проблема в том, что assert и abort оба завершают программу нем ...
Максимальное и минимальное значения в перечислении C++
есть ли способ найти максимальное и минимальное определенные значения перечисления в c++? ...
Как выбрать между картой и неупорядоченной картой?
предположим, я хотел бы сопоставить данные со строкой в качестве ключа. Какой контейнер я должен был выбрать,map или unordered_map? unordered_map занимает больше памяти, поэтому предположим, что память не является проблемой, и проблемой является скорость. unordered_map обычно должно давать среднюю сложность O(1) с наихудшим случаем O (n). В каких случаях он попадет в O(n)? Когда map получить более эффективное время, чем unordered_map? Это происходит, когда n мало? предполагая, что я буду испол ...
Как сохранить шаблон с переменным числом аргументов аргументы?
можно ли как-то сохранить пакет параметров для последующего использования? template <typename... T> class Action { private: std::function<void(T...)> f; T... args; // <--- something like this public: Action(std::function<void(T...)> f, T... args) : f(f), args(args) {} void act(){ f(args); // <--- such that this will be possible } } позже: void main(){ Action<int,int> add([](int x, int y){std::cout << (x+y);}, 3, 4) ...
В чем разница между пустым и нулевым std::shared ptr в C++?
The cplusplus.com shared_ptr страница вызывает различие между пустойstd::shared_ptr и nullshared_ptr. The cppreference.com страница явно не вызывает различие, но использует как "пустой", так и сравнение с nullptr в описании std::shared_ptr поведение. есть ли разница между пустым и нулевым shared_ptr? Есть ли какой-либо вариант использования для таких указателей смешанного поведения? Совсем не пустой null shared_ptr смысла? Будет ли когда-нибудь случай в обычном использовании (т. е. если вы яв ...
Что такое std::atomic?
Я понимаю, что std::atomic<> является атомарным объектом. Но атомный до какой степени? В моем понимании операция может быть атомной. Что именно подразумевается под атомизацией объекта? Например, если есть два потока одновременно выполнив следующий код: a = a + 12; тогда вся операция (скажем add_twelve_to(int)) атомный? Или изменения, внесенные в переменную atomic (so operator=())? ...
Ошибка компиляции C++: имеет инициализатор, но неполный тип
я кодирую в Eclipse и имею что-то вроде следующего: #include <ftream> #include <iostream> void read_file(){ char buffer[1025]; std::istringstream iss(buffer); } однако, когда я пытаюсь построить, я получаю следующую ошибку: variable 'std::istringstream iss' has initializer but incomplete type какие-нибудь быстрые мысли? Я погуглил вокруг, и кажется, что большинство людей с этой проблемой просто не включили правильные заголовочные файлы, которые я считаю, что я делаю прав ...
Ошибки компоновщика GCC C++: неопределенная ссылка на 'vtable for XXX', неопределенная ссылка на ' ClassName::ClassName()'
я настраиваю проект C++ на Ubuntu x64, используя Eclipse-CDT. Я в основном делаю Привет мир и ссылки на коммерческую библиотеку 3rd party. Я включил заголовочные файлы, связанные с их библиотеками, но я все еще получаю ошибки компоновщика. Есть ли какие-то возможные проблемы здесь, кроме очевидных (например, я на 99% уверен, что я ссылаюсь на правильную библиотеку). есть ли способ подтвердить статические библиотеки, на которые я ссылаюсь 64bit? есть ли способ подтвердить, что библиотека име ...
Есть ли лучший способ выразить вложенные пространства имен в C++ в заголовке
я переключился с C++ на Java и C# и думаю, что использование пространств имен/пакетов там намного лучше (хорошо структурировано). Затем я вернулся к C++ и попытался использовать пространства имен таким же образом, но требуемый синтаксис ужасен в заголовочном файле. namespace MyCompany { namespace MyModule { namespace MyModulePart //e.g. Input { namespace MySubModulePart { namespace ... { public c ...
Обязательные и необязательные аргументы с помощью параметров программы Boost Library
Я использую библиотеку параметров программы Boost для анализа аргументов командной строки. У меня есть следующие требования: как только "помощь", все остальные параметры являются необязательными; после того, как" помощь " не предоставляется, все остальные варианты необходимы. Как я могу справиться с этим? Вот мой код, обрабатывающий это, и я обнаружил, что это очень избыточно, и я думаю, что это должно быть легко сделать, не так ли? #include <boost/program_options.hpp> #include <i ...
Можно ли #если директивы препроцессора вложены в C++?
у меня есть вопрос о директив препроцессора в c++: например: #ifndef QUESTION //some code here #ifndef QUESTION //some code here #endif #endif можем ли мы использовать его таким образом, и может ли компилятор C++ соответствовать ifndef и endif в правильном направлении? ...
Что означает LPCWSTR и как с ним следует обращаться?
прежде всего, что это такое? Я предполагаю, что это указатель (LPC означает константу длинного указателя), но что означает "W"? Это конкретный указатель на строку или указатель на конкретную строку? Например я хочу закрыть окно с именем "TestWindow". HWND g_hTest; LPCWSTR a; *a = ("TestWindow"); g_hTest = FindWindowEx(NULL, NULL, NULL, a); DestroyWindow(g_hTest); код является незаконным и не работает, так как const char[6] не может быть преобразован в CONST WCHAR. Я вообще ничего не понимаю ...
Преобразование QString в char*
Я пытался преобразовать QString в тип char* следующими методами, но они, похоже, не работают. //QLineEdit *line=new QLineEdit();{just to describe what is line here} QString temp=line->text(); char *str=(char *)malloc(10); QByteArray ba=temp.toLatin1(); strcpy(str,ba.data()); можете ли вы разработать возможный недостаток с помощью этого метода или дать альтернативный метод? ...
Профилирование процесса компиляции C++
Я склонен писать довольно большие шаблонные заголовки-только библиотеки C++, и мои пользователи обычно жалуются на время компиляции. Подумав об этом, мне пришло в голову, что Я понятия не имею, куда идет время. Есть ли простой способ профилировать процесс компиляции C++ с помощью общих компиляторов, таких как g++, icc и xlC? Например, можно получить представление о том, сколько времени тратится в пределах каждый из этапов C++ компиляция? ...
Используя C++ filestreams (fstream), как вы можете определить размер файла? [дубликат]
этот вопрос уже есть ответ здесь: Как я могу получить размер файла в C++? [дубликат] 7 ответов Я уверен, что я только что пропустил это в руководстве, но как вы определяете размер файла (в байтах) с помощью C++'S istream класс fstream заголовок? ...
Могу ли я использовать Qt без qmake или Qt Creator?
Я хочу программировать с помощью Qt, но я не хочу использовать специальные компиляторы или IDE, такие как Qt Creator и qmake. Я хочу писать с Кейт и компилировать с g++. могу ли я скомпилировать программу, которая использует Qt с g++? Как мне скомпилировать его с помощью g++? ...