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

C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который будет скомпилирован с помощью компилятора C ++). Используйте тег, зависящий от версии, для вопросов, связанных с конкретной редакцией стандарта [C ++ 11], [C ++ 14], [C ++ 17] или [C ++ 20] и т. Д.

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

7
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", myString); cin.get(); return 0; } Каждый раз, …
157 c++  string  namespaces  printf  std 

2
C ++ наследование - недоступная база?
Кажется, я не могу использовать базовый класс в качестве параметра функции, не испортил ли я свое наследование? У меня есть следующее в моей главной: int some_ftn(Foo *f) { /* some code */ }; Bar b; some_ftn(&b); И класс Bar наследуется от Foo таким образом: class Bar : Foo { public: …
157 c++  inheritance 

6
Переместить захват в лямбду
Как мне перехватить по ходу (также известный как rvalue reference) в лямбда-выражении C ++ 11? Я пытаюсь написать что-то вроде этого: std::unique_ptr<int> myPointer(new int); std::function<void(void)> example = [std::move(myPointer)]{ *myPointer = 4; };


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

7
std :: enable_if для условной компиляции функции-члена
Я пытаюсь получить простой пример для работы, чтобы понять, как использовать std::enable_if. Прочитав этот ответ , я подумал, что не должно быть слишком сложно привести простой пример. Я хочу использовать std::enable_ifдля выбора между двумя функциями-членами и разрешить использовать только одну из них. К сожалению, следующее не компилируется с gcc 4.7 …
156 c++  templates  g++  c++11 


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

3
Значение аббревиатуры SSO в контексте std :: string
В вопросе C ++ об оптимизации и стиле кода в нескольких ответах упоминается «SSO» в контексте оптимизации копий std::string. Что SSO означает в этом контексте? Ясно, что не «единый вход». «Оптимизация общей строки», возможно?
155 c++  string  optimization 


10
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' …
155 c++  dynamic-cast 

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

14
Рекурсивные лямбда-функции в 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 b)mutable ->int { if(a>b) return 0; …
155 c++  c++11  lambda 

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.