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

Используйте этот тег для кода, который должен компилироваться как C ++ 11 (без использования каких-либо функций, представленных в C ++ 14 или более поздних версиях).


3
Что такое «rvalue reference для * this»?
На странице статуса C ++ 11 в Clang наткнулся на предложение под названием «ссылка на rvalue для * this» . Я прочитал довольно много о ссылках на rvalue и понял их, но я не думаю, что знаю об этом. Я также не мог найти много ресурсов в Интернете, используя термины. …

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

1
std :: vector регрессия производительности при включении C ++ 11
Я обнаружил интересную регрессию производительности в небольшом фрагменте C ++ при включении C ++ 11: #include <vector> struct Item { int a; int b; }; int main() { const std::size_t num_items = 10000000; std::vector<Item> container; container.reserve(num_items); for (std::size_t i = 0; i < num_items; ++i) { container.push_back(Item()); } return 0; …
235 c++  performance  gcc  c++11  vector 

4
Зачем мне использовать push_back вместо emplace_back?
С ++ 11 векторов имеют новую функцию emplace_back. В отличие от этого push_back, который полагается на оптимизацию компилятора во избежание копирования, emplace_backиспользует идеальную пересылку для отправки аргументов непосредственно в конструктор для создания объекта на месте. Мне кажется, что emplace_backвсе push_backможет сделать, но иногда это будет лучше (но никогда не хуже). …
232 c++  c++11  std 

4
Может ли использование C ++ 11 'auto' улучшить производительность?
Я понимаю, почему autoтип в C ++ 11 улучшает правильность и удобство обслуживания. Я читал, что это также может улучшить производительность ( почти всегда авто от Херба Саттера), но я упускаю хорошее объяснение. Как можно autoулучшить производительность? Кто-нибудь может привести пример?
230 c++  performance  c++11  auto 

10
Могут ли лямбда-функции быть шаблонными?
В C ++ 11 есть ли способ шаблона лямбда-функции? Или это слишком специфично для шаблонов? Я понимаю, что вместо этого я могу определить классический шаблонный класс / функтор, но вопрос больше похож на: позволяет ли язык шаблонизировать лямбда-функции?
230 c++  templates  lambda  c++11 

4
Какой тип указателя мне использовать, когда?
Итак, в прошлый раз, когда я писал на С ++, std::auto_ptrвсе, что было доступно в std lib, boost::shared_ptrбыло в ярости. Я действительно никогда не смотрел на другие типы улучшенных умных указателей. Я понимаю, что C ++ 11 теперь предоставляет некоторые из типов boost, но не все. Так есть ли у …

10
Какие критические изменения введены в C ++ 11?
Я знаю, что, по крайней мере, одно из изменений в C ++ 11, которое приведет к тому, что старый код перестанет компилироваться: введение explicit operator bool()в стандартную библиотеку, замена старых экземпляров operator void*(). Конечно, код, который это нарушит, - это, вероятно, код, который в первую очередь не должен был быть …
227 c++  c++11 

5
Является ли ключевое слово override просто проверкой переопределенного виртуального метода?
Насколько я понимаю, введение overrideключевого слова в C ++ 11 является не чем иным, как проверкой, чтобы убедиться, что реализуемая функция overrideявляется virtualфункцией функции в базовом классе. Это оно?


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

2
Почему я не могу push_back уникальный_птр в вектор?
Что не так с этой программой? #include <memory> #include <vector> int main() { std::vector<std::unique_ptr<int>> vec; int x(1); std::unique_ptr<int> ptr2x(&x); vec.push_back(ptr2x); //This tiny command has a vicious error. return 0; } Ошибка: In file included from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/mingw32/bits/c++allocator.h:34:0, from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/bits/allocator.h:48, from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/memory:64, from main.cpp:6: c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/bits/unique_ptr.h: In member function 'void __gnu_cxx::new_allocator<_Tp>::construct(_Tp*, const _Tp&) …

6
make_unique и идеальная пересылка
Почему std::make_uniqueв стандартной библиотеке C ++ 11 нет шаблона функции? я нахожу std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3)); немного многословно Разве следующее не будет намного лучше? auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3); Это newхорошо скрывает и упоминает тип только один раз. Во всяком случае, вот моя попытка реализации make_unique: template<typename T, …


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