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

98
Современный способ фильтровать контейнер STL?

Возвращаясь к C ++ после многих лет работы с C #, мне было интересно, каким будет современный - читайте: C ++ 11 - способ фильтрации массива, то есть как мы можем достичь чего-то похожего на этот запрос Linq: var filteredElements = elements.Where(elm => elm.filterProperty == true); Чтобы...

98
Почему мы копируем, а затем перемещаем?

Я где-то видел код, в котором кто-то решил скопировать объект и впоследствии переместить его в член данных класса. Это привело меня в замешательство, поскольку я думал, что весь смысл перемещения заключается в том, чтобы избежать копирования. Вот пример: struct S { S(std::string str) :...

97
Когда использовать инициализатор в фигурных скобках?

В C ++ 11 у нас есть новый синтаксис для инициализации классов, который дает нам большое количество возможностей для инициализации переменных. { // Example 1 int b(1); int a{1}; int c = 1; int d = {1}; } { // Example 2 std::complex<double> b(3,4); std::complex<double> a{3,4};...

97
Реализация лямбда-выражения C ++ 11 и модель памяти

Мне хотелось бы получить некоторую информацию о том, как правильно думать о замыканиях std::functionв C ++ 11, о том, как они реализованы и как обрабатывается память. Хотя я не верю в преждевременную оптимизацию, у меня есть привычка тщательно учитывать влияние моего выбора на производительность...

97
Разница между std :: system_clock и std :: stable_clock?

В чем разница между std::system_clockи std::steady_clock? (Примерный случай, иллюстрирующий разные результаты / поведение, был бы отличным). Если моя цель - точно измерить время выполнения функций (например, эталонный тест), что будет лучшим выбором между std::system_clock, std::steady_clockи...

97
Как передать std :: unique_ptr в функцию

Как передать std::unique_ptrв функцию? Допустим, у меня есть следующий класс: class A { public: A(int val) { _val = val; } int GetVal() { return _val; } private: int _val; }; Следующее не компилируется: void MyFunc(unique_ptr<A> arg) { cout << arg->GetVal() << endl; } int...

96
Почему нет std :: stou?

В C ++ 11 добавлены новые функции преобразования строк: http://en.cppreference.com/w/cpp/string/basic_string/stoul Он включает в себя stoi (строка в int), stol (строка в long), stoll (строка в long long), stoul (строка в long без знака), stoull (строка в long без знака). Примечательна его...

96
Почему std :: initializer_list не является встроенным языком?

Почему не std::initializer_listвстроен базовый язык? Мне кажется, что это довольно важная особенность C ++ 11, но у него нет собственного зарезервированного ключевого слова (или чего-то подобного). Вместо этого initializer_listэто просто класс шаблона из стандартной библиотеки, который имеет...

96
В чем разница между концепциями и ограничениями шаблона?

Я хочу знать, каковы семантические различия между предложением полных концепций C ++ и ограничениями шаблона (например, ограничениями, появившимися в Dlang, или предложением нового облегченного концепта для C ++ 1y ). На что способны полноценные концепции, которых не могут сделать ограничения...

95
Могу ли я инициализировать список векторов типа «только перемещение»?

Если я пропущу следующий код через мой снимок GCC 4.7, он попытается скопировать unique_ptrs в вектор. #include <vector> #include <memory> int main() { using move_only = std::unique_ptr<int>; std::vector<move_only> v { move_only(), move_only(), move_only() }; } Очевидно,...

94
Лямбда C ++ с захватами в качестве указателя на функцию

Я играл с лямбдами C ++ и их неявным преобразованием в указатели на функции. В моем начальном примере они использовались в качестве обратного вызова для функции ftw. Это работает, как ожидалось. #include <ftw.h> #include <iostream> using namespace std; int main() { auto callback =...

94
Имеет ли этот код из раздела 36.3.6 4-го издания «Язык программирования C ++» четко определенное поведение?

В разделе « Операции, подобные STL» Бьярна Страуструпа The C ++ Programming Language 4th edition, в качестве примера цепочки используется следующий код :36.3.6 void f2() { std::string s = "but I have heard it works even if you don't believe in it" ; s.replace(0, 4, "" ).replace( s.find( "even" ),...

94
Почему макросы препроцессора - зло и каковы альтернативы?

Я всегда спрашивал об этом, но никогда не получал действительно хорошего ответа; Я думаю, что почти любой программист, даже до написания первого «Hello World», сталкивался с такими фразами, как «макрос никогда не должен использоваться», «макросы - это зло» и так далее. У меня вопрос: почему? Есть...

94
Как получить продолжительность в виде int milli и float секунд из <chrono>?

Я пытаюсь использовать библиотеку хронографов для таймеров и продолжительности. Я хочу иметь Duration frameStart;(при запуске приложения) и Duration frameDelta;(время между кадрами) Мне нужно получить frameDeltaпродолжительность в миллисекундах и секундах с плавающей запятой. Как вы это делаете с...

94
Что означает [=] в C ++?

Я хочу знать, что [=]делает? Вот небольшой пример template <typename T> std::function<T (T)> makeConverter(T factor, T offset) { return [=] (T input) -> T { return (offset + input) * factor; }; } auto milesToKm = makeConverter(1.60936, 0.0); Как будет работать код []вместо [=]? Я...

94
Устранение неоднозначной перегрузки указателя функции и std :: function для лямбда с помощью +

В следующем коде первый вызов fooнеоднозначен и поэтому не может быть скомпилирован. Второй, с добавленным +перед лямбдой, разрешает перегрузку указателя функции. #include <functional> void foo(std::function<void()> f) { f(); } void foo(void (*f)()) { f(); } int main () { foo( [](){}...