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


Зачем использовать итераторы вместо индексов массива?

принять следующие две строки кода: 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 } мне сказали, что второй способ предпочтительнее. Почему именно это происходит? ...

Разбор (разделение) строки в C++ с помощью разделителя строк (стандартный C++) [дубликат]

этот вопрос уже есть ответ здесь: самый элегантный способ перебора слов строки [закрыто] 74 ответы я разбираю строку в C++, используя следующее: string parsed,input="text to be parsed"; stringstream input_stringstream(input); if(getline(input_stringstream,parsed,' ')) { // do some processing. } разбор с одним разделителем символов в порядке. Но что делать, если я хочу использовать строку в качес ...

Есть ли преимущества передачи по указателю над передачей по ссылке в C++?

каковы преимущества передачи по указателю над передачей по ссылке в C++? В последнее время я видел несколько примеров, которые выбрали передачу аргументов функции указателями вместо передачи по ссылке. Есть ли польза от этого? пример: func(SPRITE *x); с вызовом на func(&mySprite); и func(SPRITE &x); с вызовом на func(mySprite); ...

Инициализация Структуры C++

можно ли инициализировать структуры в C++, как показано ниже struct address { int street_no; char *street_name; char *city; char *prov; char *postal_code; }; address temp_address = { .city = "Hamilton", .prov = "Ontario" }; ссылки здесь и здесь упоминается, что этот стиль можно использовать только в C. Если да, то почему это невозможно в C++? Есть ли какая-либо основная техническая причина, по которой он не реализован в C++, или это плохая практика использования этого ...

Как libuv сравнивается с Boost / ASIO?

Я был бы заинтересован в таких аспектах, как: область применения / особенности производительность зрелость ...

Сортировка вектора пользовательских объектов

Как происходит сортировка вектора, содержащего пользовательские (т. е. определенные пользователем) объекты. Наверное, стандартный алгоритм STL вроде наряду с предикатом (функция или объект функции), который будет работать на одном из полей (в качестве ключа для сортировки) в пользовательском объекте должны быть использованы. Я на правильном пути? ...

Насколько быстрее C++ , чем C#?

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

Сравните двойник к нул используя Эпсилон

сегодня я просматривал какой-то код C++ (написанный кем-то другим) и нашел этот раздел: double someValue = ... if (someValue < std::numeric_limits<double>::epsilon() && someValue > -std::numeric_limits<double>::epsilon()) { someValue = 0.0; } Я пытаюсь выяснить, имеет ли это смысл. документация epsilon() говорит: функция возвращает разность между 1 и наименьшим значением больше 1, которое может быть представлено [двойным]. это относится и к 0, т. е. ep ...

Как преобразовать QString в std:: string?

Я пытаюсь сделать что-то вроде этого: QString string; // do things... std::cout << string << std::endl; но код не компилируется. Как вывести содержимое qstring в консоль (например, для целей отладки или по другим причинам)? Как конвертировать QString to std::string? ...

Есть ли графический интерфейс c++ gdb для Linux? [закрытый]

кратко: кто-нибудь знает о GUI для gdb, который приносит его наравне или близко к набору функций, который вы получаете в более поздней версии Visual C++? подробно: как кто-то, кто потратил много времени на программирование в Windows, один из больших камней преткновения, которые я нашел всякий раз, когда мне нужно кодировать C++ в Linux, заключается в том, что отладка чего-либо с помощью командной строки gdb занимает у меня в несколько раз больше времени, чем в Visual Studio, и это, похоже, не с ...

Почему неконстантная ссылка не может быть привязана к временному объекту?

почему нельзя получить неконстантную ссылку на временный объект, какая функция getx() возвращает? Очевидно, что это запрещено стандартом C++ но меня интересует цель такого ограничения -не ссылки стандартные. struct X { X& ref() { return *this; } }; X getx() { return X();} void g(X & x) {} int f() { const X& x = getx(); // OK X& x = getx(); // error X& x = getx().ref(); // OK g(getx()); //error g(getx().ref()); //OK return 0; } понятн ...

Сколько стоит слишком много с ключевым словом C++11 auto?

я использую новый auto ключевое слово, доступное в стандарте C++11 для сложных шаблонных типов, для которых, как я считаю, он был разработан. Но я также использую его для таких вещей, как: auto foo = std::make_shared<Foo>(); и более скептически на: auto foo = bla(); // where bla() return a shared_ptr<Foo> Я не видел много дискуссий на эту тему. Кажется, что auto может быть перегружен, так как тип часто является формой документации и проверки. Где вы проводите линию с помощью au ...

Как напечатать элементы вектора C++ в GDB?

Я хочу изучить содержание std::vector в GDB, как мне это сделать? Допустим, это std::vector<int> для простоты. ...

Вызов виртуальных функций внутри конструкторов

Предположим, у меня есть два класса C++: class A { public: A() { fn(); } virtual void fn() { _n = 1; } int getn() { return _n; } protected: int _n; }; class B : public A { public: B() : A() {} virtual void fn() { _n = 2; } }; если я напишу следующий код: int main() { B b; int n = b.getn(); } можно было бы ожидать, что n имеет значение 2. получается, что n имеет значение 1. Зачем? ...

Какие идиомы C++ устарели в C++11?

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

Почему используются безымянные пространства имен и каковы их преимущества?

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

Неопределенная ссылка на статический член класса

может кто-нибудь объяснить, почему следующий код не компилируется? По крайней мере на G++ 4.2.4. и еще интереснее, почему он будет компилироваться, когда я приведу член в int? #include <vector> class Foo { public: static const int MEMBER = 1; }; int main(){ vector<int> v; v.push_back( Foo::MEMBER ); // undefined reference to `Foo::MEMBER' v.push_back( (int) Foo::MEMBER ); // OK return 0; } ...

Есть ли польза для уникального ptr с массивом?

std::unique_ptr имеет поддержку массивов, например: std::unique_ptr<int[]> p(new int[10]); но нужно ли это? наверное, им удобнее пользоваться std::vector или std::array. вы находите какое-либо применение для этой конструкции? ...

Как суммировать элементы вектора C++?

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

C++ "виртуальное" ключевое слово для функций в производных классах. Это необходимо?

с определением структуры, приведенным ниже... struct A { virtual void hello() = 0; }; подход #1: struct B : public A { virtual void hello() { ... } }; подход #2: struct B : public A { void hello() { ... } }; есть ли разница между этими двумя способами переопределения функции hello? ...