c++- все статьи тега ➜ страница 21
Когда векторы выделяются, они используют память в куче или стеке?
все ли следующие утверждения верны? vector<Type> vect; //allocates vect on stack and each of the Type (using std::allocator) also will be on the stack vector<Type> *vect = new vector<Type>; //allocates vect on heap and each of the Type will be allocated on stack vector<Type*> vect; //vect will be on stack and Type* will be on heap. как память выделяется внутренне для Type на vector или любой другой контейнер STL? ...
Зачем нам нужен extern " C " {#include} в C++? [дубликат]
этот вопрос уже есть ответ здесь: каков эффект extern "C" в C++? 13 ответов почему мы должны использовать: extern "C" { #include <foo.h> } в частности: когда мы должны использовать его? что происходит в уровень компилятора / компоновщика, который требует от нас его использования? как с точки зрения компиляции / связывания это решает проблемы, которые требуют от нас его использования? ...
Как сделать вывод CMake в' bin ' dir?
в настоящее время я создаю проект со структурой плагина. Я использую CMake для компиляции проекта. Плагины компилируются в отдельных каталогах. Моя проблема заключается в том, что CMake компилирует и сохраняет двоичные файлы и плагины, динамические библиотеки, в структуре каталогов источника. Как я могу сделать CMake сохранить файлы в чем-то вроде ./ОГРН? ...
/usr / lib / libstdc++. so. 6: версия 'GLIBCXX 3.4.15' не найдена
Как я могу получить GLIBCXX_3.4.15 в Ubuntu? Я не могу запустить некоторые программы, которые я составляю. когда я делаю: strings /usr/lib/libstdc++.so.6 | grep GLIBC Я: GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_3.4.14 GLIBC_2.2.5 GLIBC_2.3 GLIBC_2.4 GLIBC_2.3.4 GLIBC_2.3.2 GLIBCXX_FORCE_NEW GLIBCXX_DEBUG_MESSAGE_LENGTH Спасибо ...
Правильное использование стека и кучи в C++?
я программировал некоторое время, но это было в основном Java и C#. Мне никогда не приходилось управлять памятью самостоятельно. Недавно я начал программировать на C++, и я немного смущен тем, когда я должен хранить вещи в стеке и когда хранить их в куче. Я понимаю, что переменные, к которым обращаются очень часто, должны храниться в стеке и объектах, редко используемые переменные и большие структуры данных должны храниться в куче. Заключаться в следующем правильно или я ошибаюсь? ...
Почему я не должен включать файлы cpp и вместо этого использовать заголовок?
Итак, я закончил свое первое задание по программированию на C++ и получил свою оценку. Но согласно оценке, я потерял оценки за including cpp files instead of compiling and linking them. Я не совсем понимаю, что это значит. оглядываясь на мой код, я решил не создавать заголовочные файлы для своих классов, но сделал все в файлах cpp (казалось, он отлично работает без заголовочных файлов...). Я предполагаю, что грейдер имел в виду, что я написал '#include "mycppfile.cpp";' в некоторых моих файлах. ...
Выбор между использованием std::map и std::неупорядоченный карте
теперь std имеет реальную хэш-карту в unordered_map, почему (или когда) я все еще хочу использовать старый добрый map over unordered_map в системах, где он существует? Есть ли очевидные ситуации, которые я не могу сразу увидеть? ...
'typeid' против 'typeof' в C++
мне интересно, в чем разница между typeid и typeof В C++. Вот что я знаю: typeid упоминается в документации к type_info, который определен в заголовочном файле c++ typeinfo. typeof определяется в расширении GCC для C и в C++ Boost библиотека. кроме того, вот тестовый код теста, который я создал где я это обнаружил typeid не возвращает то, что я ожидал. Зачем? главная.cpp #include <iostream> #include <typeinfo> //for 'typeid' to work class Person { public: // ... ...
Производительность C++ по сравнению с Java/C#
Я понимаю, что C/C++ создает собственный код для запуска на определенной архитектуре машины. И наоборот, такие языки, как Java и C#, работают поверх виртуальной машины, которая абстрагирует собственную архитектуру. Логически казалось бы, что Java или C# не могут соответствовать скорости C++ из-за этого промежуточного шага, однако мне сказали, что последние компиляторы ("горячая точка") могут достичь этой скорости или даже превысить ее. возможно, это скорее компилятор вопрос, чем языковой вопр ...
Почему вектор C++ называется вектором?
вопрос довольно очевидно на самом деле. Я смутно знаю о векторах в математике, но я действительно не вижу связи с векторами C++. ...
C++ эквивалент java.toString?
Я хочу контролировать то, что записывается в поток, т. е. cout, для объекта пользовательского класса. Возможно ли это в C++? В Java вы можете переопределить toString() метод для аналогичной цели. ...
быстрый способ скопировать один вектор в другой
Я предпочитаю два способа: void copyVecFast(const vec<int>& original) { vector<int> newVec; newVec.reserve(original.size()); copy(original.begin(),original.end(),back_inserter(newVec)); } void copyVecFast(vec<int>& original) { vector<int> newVec; newVec.swap(original); } Как вы это делаете? ...
Что происходит с отсоединенным потоком при выходе main ()?
предположим, что я начинаю std::thread а то detach() это, так что поток продолжает выполняться, даже если std::thread то, что когда-то представляло его, выходит за рамки. предположим далее, что программа не имеет надежного протокола для вступления в отдельной теме1, поэтому отсоединенный поток все еще работает, когда main() выход. Я не могу найти ничего в стандарте (точнее, в проекте N3797 C++14), который описывает, что должно произойти, ни 1.10, ни 30.3 не содержат соответствующей формулировк ...
Использование универсальных объектов std:: function с функциями-членами в одном классе
для одного класса я хочу сохранить некоторые указатели на функции-члены одного класса в одном map хранение std::function объекты. Но я терплю неудачу в самом начале с этим кодом: class Foo { public: void doSomething() {} void bindFunction() { // ERROR std::function<void(void)> f = &Foo::doSomething; } }; я получил error C2064: term does not evaluate to a function taking 0 arguments на xxcallobj в сочетании с некоторыми странными ош ...
Эффективный способ определения количества цифр в целом числе
очень эффективное способ определения, сколько цифр есть в целом в C++? ...
Что такое declspec и когда мне нужно его использовать?
Я видел экземпляры _ _ declspec в коде, который я читаю. Что это? И когда мне нужно будет использовать эту конструкцию? ...
Как объединить несколько строк C++ в одной строке?
C# имеет синтаксическую функцию, где вы можете объединить много типов данных вместе на 1 строке. string s = new String(); s += "Hello world, " + myInt + niceToSeeYouString; s += someChar1 + interestingDecimal + someChar2; что было бы эквивалентно в C++? Насколько я вижу, вам придется делать все это на отдельных строках, поскольку он не поддерживает несколько строк/переменных с оператором+. Это нормально, но не выглядит так аккуратно. string s; s += "Hello world, " + "nice to see you, " + "or ...
динамическое и статическое приведение в 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 = dynamic_cast<C*> (ap); // NULL. A& ar = dynamic_cast<A&> (*ap); // Ok. B& br = dynamic_cast<B&> (*ap); // Ok. C& cr = dy ...
Почему следует использовать идиому" PIMPL"? [дубликат]
этот вопрос уже есть ответ здесь: Является ли идиома pImpl действительно используется на практике? 11 ответов Backgrounder: The Пимпл идиома (указатель на реализацию) - это метод скрытия реализации, в котором открытый класс обертывает структуру или класс, которые не могут быть видны за пределами библиотеки общественный класс является частью. это скрывает внутренние детали реализации и данные от пользо ...
Почему использование кортежей в C++ не более распространено?
Почему никто, кажется, не использует кортежи в C++, либо Boost Tuple Library или стандартная библиотека для TR1? Я прочитал много кода на C++, и очень редко я вижу использование кортежей, но я часто вижу много мест, где Кортежи будут решать многие проблемы (обычно возвращая несколько значений из функций). кортежи позволяют делать все виды крутых вещей, как это: tie(a,b) = make_tuple(b,a); //swap a and b это, конечно, лучше, чем это: temp=a; a=b; b=temp; конечно, вы всегда можете сделать э ...