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

157
printf с помощью std :: string?

Насколько я понимаю, stringэто член stdпространства имен, так почему же происходит следующее? #include <iostream> int main() { using namespace std; string myString = "Press ENTER to quit program!"; cout << "Come up and C++ me some time." << endl; printf("Follow this command: %s",...

157
Что означает итератор-> second?

В C ++, какой тип std::map<>::iterator? Мы знаем, что объект itтипа std::map<A,B>::iteratorимеет перегруженную версию, operator ->которая возвращает a std::pair<A,B>*, и что std::pair<>элемент a имеет firstи second. Но чему соответствуют эти два члена и почему мы должны...

156
std :: enable_if для условной компиляции функции-члена

Я пытаюсь получить простой пример для работы, чтобы понять, как использовать std::enable_if. Прочитав этот ответ , я подумал, что не должно быть слишком сложно привести простой пример. Я хочу использовать std::enable_ifдля выбора между двумя функциями-членами и разрешить использовать только одну из...

156
Почему библиотеки и фреймворки C ++ никогда не используют умные указатели?

Я прочитал в нескольких статьях, что сырые указатели почти никогда не должны использоваться. Вместо этого они всегда должны быть заключены в интеллектуальные указатели, будь то область видимости или общие указатели. Однако я заметил, что фреймворки, такие как Qt, wxWidgets и библиотеки, такие как...

155
Что делает перегрузку оператора Scala «хорошей», а «плохой» в C ++?

Многие считают, что перегрузка операторов в C ++ является «плохой вещью» (tm), и это ошибка, которую нельзя повторять на более новых языках. Конечно, это была одна особенность, специально упущенная при разработке Java. Теперь, когда я начал читать Scala, я обнаружил, что он имеет то, что очень...

155
Зачем кому-то использовать set вместо unordered_set?

Представляем C ++ 0x, unordered_setкоторый доступен во boostмногих других местах. Я понимаю, что unordered_setэто хеш-таблица со O(1)сложностью поиска. С другой стороны, setэто не что иное, как дерево со log(n)сложностью поиска. Зачем кому-то использовать setвместо unordered_set? т.е. есть ли...

155
Рекурсивные лямбда-функции в C ++ 11

Я новичок в C ++ 11. Я пишу следующую рекурсивную лямбда-функцию, но она не компилируется. sum.cpp #include <iostream> #include <functional> auto term = [](int a)->int { return a*a; }; auto next = [](int a)->int { return ++a; }; auto sum = [term,next,&sum](int a, int...

155
dynamic_cast и static_cast в C ++

Я совершенно запутался с dynamic_castключевым словом в C ++. struct A { virtual void f() { } }; struct B : public A { }; struct C { }; void f () { A a; B b; A* ap = &b; B* b1 = dynamic_cast<B*> (&a); // NULL, because 'a' is not a 'B' B* b2 = dynamic_cast<B*> (ap); // 'b' C* c =...

155
Когда использовать std :: forward для пересылки аргументов?

C ++ 0x показывает пример использования std::forward: template<class T> void foo(T&& arg) { bar(std::forward<T>(arg)); } Когда выгодно использовать std::forwardвсегда? Кроме того, он требует использования &&в декларации параметров, действительно ли это во всех случаях? Я...

154
в то время как (1) против для (;;) Есть ли разница в скорости?

Длинная версия ... Сотрудник заявил сегодня, увидев мое использование while (1)в сценарии Perl, который for (;;)работает быстрее. Я утверждал, что они должны быть такими же, надеясь, что переводчик оптимизирует любые различия. Я установил скрипт, который будет запускать 1 000 000 000 для итераций...

154
Зачем нам нужен чистый виртуальный деструктор в C ++?

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

154
Прекращение преобразования C ++ из строковой константы в 'char *'

У меня есть класс с private char str[256]; и для этого у меня есть явный конструктор: explicit myClass(const char *func) { strcpy(str,func); } Я называю это так: myClass obj("example"); Когда я компилирую это, я получаю следующее предупреждение: устаревшее преобразование из строковой константы в...

154
Преобразование int в std :: string

Каков самый короткий способ, желательно встроенный, преобразовать int в строку? Ответы с использованием stl и boost будут приветствоваться.

154
std :: cin ввод с пробелами?

#include <string> std::string input; std::cin >> input; Пользователь хочет ввести «Hello World». Но cinне получается пробел между двумя словами. Как я могу понять cinвсе Hello World? Я действительно делаю это со структурами и cin.getline, похоже, не работает. Вот мой код: struct cd {...

154
Экзотические архитектуры, о которых заботятся комитеты по стандартам

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

154
Зачем использовать «b <a? a: b »вместо« a <b? b: a ”для реализации шаблона max?

Шаблоны C ++ - полное руководство, второе издание, представляет шаблон max : template<typename T> T max (T a, T b) { // if b < a then yield a else yield b return b < a ? a : b; } И это объясняет использование “b < a ? a : b”вместо “a < b ? b : a”: Обратите внимание, что шаблон max...