c++- все статьи тега ➜ страница 22


Какие реализации интеллектуального указателя C++ доступны?

сравнения, плюсы, минусы и когда использовать? Это спин-офф от поток сборки мусора где то, что я думал, было простым ответом, породило много комментариев о некоторых конкретных реализациях интеллектуальных указателей, поэтому казалось, что стоит начать новый пост. в конечном счете вопрос в том, каковы различные реализации интеллектуальных указателей в C++ и как они сравниваются? Просто плюсы и минусы или исключения и gotchas к чему-то, что вы могли бы иначе думать, должно работать. я опублик ...

Как работает " void t

я смотрел выступление Уолтера Брауна на Cppcon14 о современном программировании шаблонов (Часть I,Часть II), где он представил свою void_t техника SFINAE. пример: Учитывая простой шаблон переменной, который оценивается в void если все аргументы шаблона формата: template< class ... > using void_t = void; и следующий признак, который проверяет наличие переменной-члена с именем : template< class , class = void > struct has_member : std::false_type { }; // specialized as has_member ...

Как удалить элемент из вектора stl с определенным значением?

Я смотрел документацию API для STL vector и заметил, что в классе vector не было метода, который позволял бы удалять элемент с определенным значением. Это похоже на обычную операцию, и кажется странным, что нет встроенного способа сделать это. ...

C++ - передача ссылок на std:: shared ptr или boost:: shared ptr

если у меня есть функция, которая должна работать с shared_ptr, не было бы более эффективным передать ему ссылку на него (так, чтобы избежать копирования ...

Как рассчитать время выполнения фрагмента кода в C++

Я должен вычислить время выполнения фрагмента кода C++ в секундах. Он должен работать либо на Windows, либо на машинах Unix. Я использую код следующий код, чтобы сделать это. (импорт до) clock_t startTime = clock(); // some code here // to compute its execution duration in runtime cout << double( clock() - startTime ) / (double)CLOCKS_PER_SEC<< " seconds." << endl; однако для небольших входов или коротких операторов, таких как a = a + 1, я получаю результат "0 секунд". Я ду ...

Как отсортировать вектор пар на основе второго элемента пары?

Если у меня есть вектор пар: std::vector<std::pair<int, int> > vec; есть ли и простой способ сортировки списка в порядке возрастания на основе второго элемента пары? Я знаю, что могу написать небольшой объект функции, который будет выполнять работу, но есть ли способ использовать существующие части STL и std::less сделать работу сразу? EDIT: я понимаю, что могу написать отдельную функцию или класс, чтобы перейти к третьему аргументу для сортировки. Вопрос могу ли я построить ег ...

Какова цель ключевого слова "final" В C++11 для функций?

какова цель final ключевое слово в C++11 функций? Я понимаю, что это предотвращает переопределение функций производными классами, но если это так, то разве недостаточно объявить как невиртуальный ваш final функции? Есть ли еще что-то, что я упускаю здесь? ...

C++ преобразование шестнадцатеричной строки в целое число со знаком

Я хочу преобразовать шестнадцатеричную строку в 32-разрядное целое число со знаком в C++. Так, например, у меня есть шестнадцатеричная строка "fffefffe". Двоичное представление этого является 11111111111111101111111111111110. Целочисленное представление со знаком это: -65538. Как сделать это преобразование в C++? Это также должно работать для неотрицательных чисел. Например, шестнадцатеричная строка "0000000A", которая является 00000000000000000000000000001010 в двоичном формате и 10 в ...

Что делает макрос Q OBJECT? Почему все объекты Qt нуждаются в этом макросе?

Я только начал использовать Qt и заметил, что все пример определения класса есть макрос Q_OBJECT в первой строке. Какова цель этого макроса препроцессора? ...

Разница между размером t и std:: размер t

в чем разница между size_t и std::size_t С точки зрения того, где они объявлены, когда они должны быть использованы и любые другие отличительные особенности? ...

Pimpl идиома против чистого интерфейса виртуального класса

Мне было интересно, что заставит программиста выбрать либо идиому Pimpl, либо чистый ВИРТУАЛЬНЫЙ КЛАСС и наследование. Я понимаю, что идиома pimpl поставляется с одной явной дополнительной косвенностью для каждого публичного метода и накладных расходов на создание объекта. чистый виртуальный класс, с другой стороны, поставляется с неявной косвенностью(vtable) для наследования реализации, и я понимаю, что нет накладных расходов на создание объекта. EDIT: но вам нужно фабрика, если вы создаете о ...

Что означает "int& foo ()" в C++?

во время чтения данное объяснение на lvalues и rvalues, эти строки кода торчали ко мне: int& foo(); foo() = 42; // OK, foo() is an lvalue Я пробовал это в g++, но компилятор говорит "неопределенная ссылка на foo()". Если я добавлю int foo() { return 2; } int main() { int& foo(); foo() = 42; } он компилируется нормально, но работает она дает ошибка сегментирования. Только строчка int& foo(); сам по себе как компилируется и работает без каких-либо проблем. что означает ...

Что такое "стук"?

Я видел, что он используется в программировании (в частности, в домене C++) и понятия не имею, что это такое. Предположительно, это шаблон, но я могу ошибаться. Может ли кто-нибудь привести хороший пример удара? ...

неопределенная ссылка на 'std:: cout'

это пример: #include <iostream> using namespace std; int main() { cout << "Hola, moondo.n"; } Он выдает ошибку: gcc -c main.cpp gcc -o edit main.o main.o: In function `main': main.cpp:(.text+0xa): undefined reference to `std::cout' main.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char,std::char_traits<char> >& std::operator<< <std::char_traits<char>>(std::basic_ostream<char, std::char_traits<char> >&, char co ...

Как я могу избежать циклов "for" с условием " if " внутри них с помощью C++?

почти со всем кодом, который я пишу, я часто имею дело с проблемами сокращения набора в коллекциях, которые в конечном итоге заканчиваются наивными условиями "если" внутри них. Вот простой пример: for(int i=0; i<myCollection.size(); i++) { if (myCollection[i] == SOMETHING) { DoStuff(); } } с функциональными языками я могу решить проблему, уменьшив коллекцию до другой коллекции (легко), а затем выполнить все операции над моим уменьшенным набором. В псевдокоде: new ...

Как определить платформу / компилятор из макросов препроцессора?

Я пишу кросс-платформенный код, который должен компилироваться в linux, windows, Mac OS. В windows я должен поддерживать visual studio и mingw. есть некоторые части специфичного для платформы кода, которые я должен поместить в #ifdef .. #endif окружающая среда. Например, здесь я разместил специфический код win32: #ifdef WIN32 #include <windows.h> #endif но как я узнаю linux и mac OS? То, что определяет имена (или т. д.) Я должен использовать? ...

Неразрешенный внешний символ на статических членах класса

очень просто: У меня есть класс, который состоит в основном из статических открытых членов, поэтому я могу группировать подобные функции вместе, которые все еще должны вызываться из других классов/функций. в любом случае, я определил две статические беззнаковые переменные char в моей публичной области класса, когда я пытаюсь изменить эти значения в конструкторе того же класса, я получаю ошибку "неразрешенный внешний символ" при компиляции. class test { public: static unsigned char X; ...

Понимание значения термина и понятия - RAII (приобретение ресурсов-это инициализация)

не могли бы Вы, разработчики C++, дать нам хорошее описание того, что такое RAII, почему это важно, и может ли это иметь какое-либо отношение к другим языкам? Я do знаю немного. Я считаю, что это означает "приобретение ресурсов является инициализацией". Однако это имя не совпадает с моим (возможно, неверным) пониманием того, что такое RAII: у меня создается впечатление, что RAII-это способ инициализации объектов в стеке, когда те переменные выходят из области видимости, деструкторы будут автом ...

Как следует использовать std::опционально?

Я читаю документацию std::experimental::optional и у меня есть хорошая идея о том, что он делает, но я не понимаю , когда Я должен использовать его, или, как я должен использовать его. Сайт пока не содержит никаких примеров, что затрудняет мне понимание истинной концепции этого объекта. Когда это std::optional хороший выбор для использования, и как он компенсирует то, что не было найдено в предыдущем стандарте (C++11). ...

Написание собственного контейнера STL

существуют ли рекомендации о том, как следует писать новый контейнер, который будет вести себя как любой STL контейнер? ...