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


Рефакторинг в C++ 11

учитывая новый набор инструментов, предоставленный c++ множеством программистов, направленных на упрощение кода, выразительность, эффективность, просматривайте свой старый код и делайте настройки (некоторые бессмысленные, некоторые успешные) для достижения своих целей. Пытаясь не терять слишком много времени на такие труды и просто делать ненавязчивые и самодостаточные изменения, каковы лучшие практики? позвольте мне вычеркнуть очевидное: использовать авто запустить циклы на основе итератор ...

статические переменные во встроенной функции

У меня есть функция, которая объявлена и определена в заголовочном файле. Это проблема сама по себе. Когда эта функция не встроена, каждая единица перевода, которая использует этот заголовок, получает копию функции, и когда они связаны вместе, они дублируются. Я " исправил "это, сделав функцию встроенной, но я боюсь, что это хрупкое решение, потому что, насколько я знаю, компилятор не гарантирует встраивание, даже когда вы указываете ключевое слово" inline". Если это не правда, пожалуйста, попра ...

Создание пространства имен C++ в заголовке и источнике (cpp)

есть ли разница между переносом содержимого заголовка и файла cpp в пространство имен или переносом только содержимого заголовка, а затем выполнением использование пространства имен в файле cpp? под разницей я имею в виду любой штраф за производительность или немного другую семантику, которая может вызвать проблемы или что-то, что мне нужно знать. пример: // header namespace X { class Foo { public: void TheFunc(); }; } // cpp namespace X { void Foo::TheFunc() { return; ...

Как использовать сторонний DLL-файл в Visual Studio C++?

Я понимаю, что мне нужно использовать LoadLibrary(). Но какие еще шаги мне нужно предпринять, чтобы использовать сторонний DLL-файл? Я просто прыгнул в C++, и это единственная часть, которую я не получаю (как программист Java). Я просто смотрю, как я могу использовать Qt библиотека и tesseract-ocr, но этот процесс не имеет никакого смысла для меня и так трудно google. Как я могу сообщить компилятору функций, которые я использую? Должно ли быть включить файл от стороннего поставщика? ...

Где находится указатель "this", хранящийся в памяти компьютера?

где именно 'этот' указатель хранится в памяти? Он выделяется в стеке, в куче или в сегменте данных? #include <iostream> using namespace std; class ClassA { int a, b; public: void add() { a = 10; b = 20; cout << a << b << endl; } }; int main() { ClassA obj; obj.add(); return 0; } В приведенном выше коде я вызываю функцию-член add() и объект receiver передается неявно как указатель 'this'. ...

Что произойдет, если я присвою отрицательное значение беззнаковой переменной?

мне было любопытно узнать, что произойдет, если я присвою отрицательное значение беззнаковой переменной. код будет выглядеть так. unsigned int nVal = 0; nVal = -5; это не дало мне никакой ошибки компилятора. Когда я запустил программу nVal было присвоено странное значение! Может быть, какое-то значение дополнения 2 присваивается nVal? ...

Какие требования должны соответствовать классам ключей std::map, чтобы быть действительными ключами?

Я хочу сопоставить объекты данного класса с объектами другого. Класс, который я хочу использовать в качестве ключа, однако, не был написан мной и является простым struct с несколькими значениями. std:: map orders это содержимое, и мне было интересно, как оно это делает, и если любой произвольный класс может быть использован в качестве ключа или если есть набор требований (операторы и что нет), которые должны быть определены. Если это так, я мог бы создать оболочку для класса, реализующего испол ...

C++: сравнение двух векторов

есть ли способ сравнить два вектора? if (vector1 == vector2) DoSomething(); Примечание: в настоящее время, эти векторы не отсортированы и содержат целые значения. ...

Где находится замок для std:: atomic?

если структура данных содержит несколько элементов, атомарная версия не может (всегда) быть без блокировки. Мне сказали, что это верно для больших типов, потому что процессор не может атомарно изменить данные без использования какой-то блокировки. например: #include <iostream> #include <atomic> struct foo { double a; double b; }; std::atomic<foo> var; int main() { std::cout << var.is_lock_free() << std::endl; std::cout << sizeof(foo) &lt ...

Получить имя файла из пути

какой самый простой способ получить имя файла из пути? string filename = "C:MyDirectoryMyFile.bat" в этом примере я должен получить "MyFile". без расширения. ...

эффективный потокобезопасный синглтон в C++

обычный шаблон для одноэлементного класса-это что-то вроде static Foo &getInst() { static Foo *inst = NULL; if(inst == NULL) inst = new Foo(...); return *inst; } однако я понимаю, что это решение не является потокобезопасным, поскольку 1) конструктор Foo может быть вызван более одного раза (что может или не может иметь значения) и 2) inst не может быть полностью построен до того, как он будет возвращен в другой поток. одним из решений является обертывание мьютекса вокруг вс ...

Почему в Java нет конструктора копирования?

Почему Java не поддерживает конструктор копирования, как в C++? ...

Каков самый быстрый способ транспонировать матрицу в C++?

у меня есть матрица (относительно большая), которую мне нужно транспонировать. Например, предположим, что моя матрица a b c d e f g h i j k l m n o p q r Я хочу, чтобы результат был следующим: a g m b h n c I o d j p e k q f l r какой самый быстрый способ сделать это? ...

Почему мы не можем объявить std:: vector?

Потратив довольно много времени на разработку в C#, я заметил, что если вы объявляете абстрактный класс с целью использования его в качестве интерфейса, вы не можете создать вектор этого абстрактного класса для хранения экземпляров дочерних классов. #pragma once #include <iostream> #include <vector> using namespace std; class IFunnyInterface { public: virtual void IamFunny() = 0; }; class FunnyImpl: IFunnyInterface { public: virtual void IamFunny() { cout &lt ...

Как использовать приоритетную очередь STL для объектов?

class Person { public: int age; }; Я хочу, чтобы хранить объекты класса Person в приоритетной очереди. priority_queue< Person, vector<Person>, ??? > Я думаю, что мне нужно определить класс для сравнения вещи, но я не уверен в этом. также, Когда мы пишем, priority_queue< int, vector<int>, greater<int> > как работает большее? ...

Как получить библиотеку GL / заголовки?

#include <glgl.h> #include <glglu.h> #include <glglaux.h> Это пример, но где взять заголовки GL? ...

Внутренние классы в C++ автоматически друзей?

Если я определяю внутренний класс В C++, это автоматически друг из класса, который его содержит? Например, это законно: class Outer { public: class Inner { public: void mutateOuter(Outer& o); }; private: int value; }; void Outer::Inner::mutateOuter(Outer& o) { o.value ++; // Legal? Or not? } Я спрашиваю, потому что на некоторых компиляторах я пробовал (VS2003) этот код не будет работать, но я слышал, по крайней мере, анекдотично, что он работает на неко ...

Разница между std:: reference wrapper и простым указателем?

зачем нужно иметь std::reference_wrapper? Где его следует использовать? Чем он отличается от простого указателя? Как его производительность сравнивается с простым указателем? ...

Почему конструкция std:: optional дороже, чем std:: pair?

рассмотрим эти два подхода, которые могут представлять собой " необязательный int": using std_optional_int = std::optional<int>; using my_optional_int = std::pair<int, bool>; учитывая эти две функции... auto get_std_optional_int() -> std_optional_int { return {42}; } auto get_my_optional() -> my_optional_int { return {42, true}; } ...оба G++ и багажник и clang++ trunk(С -std=c++17 -Ofast -fno-exceptions -fno-rtti) произведите следующую сборку: get_std_optional ...

Qt "private slots:" что это такое?

Я понимаю, как его использовать, но синтаксис меня беспокоит. Что такое" частные слоты: "делать? Я никогда не видел что-то между ключевым словом private и : в определении класса раньше. Есть ли здесь какая-то причудливая магия C++? и вот пример: #include <QObject> class Counter : public QObject { Q_OBJECT public: Counter() { m_value = 0; } int value() const { return m_value; } public slots: void setValue(int value); ... ...