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

16
Хранит ли std :: set объекты непрерывно в памяти?

Хранит ли std::setобъекты в непрерывной памяти как std::vector? Я не смог найти это в Интернете, cppreference не упоминает подробности о распределении памяти. Но я не понимаю, почему он не может использовать непрерывную память, поэтому мой...

16
std :: pair <auto, auto> тип возвращаемого значения

Я играл с autoв std::pair. В приведенном ниже коде функция fдолжна возвращать std::pairтипы, которые зависят от параметра шаблона. Рабочий пример: Пример 1 template <unsigned S> auto f() { if constexpr (S == 1) return std::pair{1, 2}; // pair of ints else if constexpr (S == 2) return...

16
Оптимизация целевой функции R с помощью Rcpp медленнее, почему?

В настоящее время я работаю над байесовским методом, который требует нескольких этапов оптимизации полиномиальной логит-модели на одну итерацию. Я использую optim () для выполнения этих оптимизаций, и целевая функция, написанная на R. Профилирование показало, что optim () является основным узким...

16
Как передать ссылку на аргумент typename шаблона

Есть ли способ передать ссылку в качестве аргумента аргументу типа имя шаблона? Я имею в виду, что вместо передачи int, например, чтобы передать ссылку на int. template <typename T> struct Foo { Foo(T arg) : ptr(arg) {} T ptr; }; int main() { int* a = new int(6); Foo<decltype(a)>...

15
Является ли программа, которая никогда не завершает действительную программу C ++?

Требуется ли прекращение работы программы? Другими словами, это программа, которая всегда работает технически с неопределенным поведением? Обратите внимание, что это не о пустых циклах. Разговор о программах, которые делают "вещи" (то есть наблюдаемое поведение) навсегда. Например, что-то вроде...

15
В чем разница между старым alloctaor :: construct и новым и явным конструктором?

Как я знаю, std::allocator<T>::constructпринимает только два параметра в более старой версии C ++; первый - указатель на необработанную неструктурированную память, в которой мы хотим создать объект типа, Tа второй - значение типа элемента для инициализации этого объекта. Итак, конструктор...

15
Дано целое число N. Какое наименьшее целое число больше, чем N, которое имеет только 0 или 1 в качестве цифр?

У меня есть целое число N. Я должен найти наименьшее целое число больше N, которое не содержит цифр, кроме 0 или 1. Например: если N = 12тогда ответ - 100. Я кодировал подход грубой силы в C ++. int main() { long long n; cin >> n; for (long long i = n + 1; ; i++) { long long temp = i; bool ok...

15
Почему у `std :: basic_ios` есть открытый конструктор?

std::basic_iosимеет открытый конструктор : explicit basic_ios (std::basic_streambuf<CharT,Traits>* sb); IMO, единственная причина, по которой у класса есть открытый конструктор, - это использование автономного экземпляра этого класса в программе. Если класс существует только для того, чтобы...

15
Как иметь переменную const в цикле for для генерации шаблонных классов?

У меня есть код как template <size_t N> class A { template <size_t N> someFunctions() {}; }; Теперь я хочу создать экземпляры класса и вызвать его функции в цикле for для множества значений: // in main() int main() { for (int i = 1; i <= 100; i++) { const int N = i; // dont know how...

15
Как компиляторы c ++ находят переменную extern?

Я компилирую эту программу с помощью g ++ и clang ++. Есть разница: g ++ печатает 1, а clang ++ печатает 2. Кажется, что g ++: внешняя переменная определена в самой короткой области видимости. clang ++: внешняя переменная определена в самой короткой глобальной области видимости. Есть ли в C ++...

15
Считать строки исходного файла, используя макросы?

Возможно ли с помощью препроцессора C / C ++ подсчитать строки в исходном файле либо в макросе, либо в некотором виде, доступном во время компиляции? Например, я могу заменить MAGIC1, MAGIC2и MAGIC3в следующем, и получить значение 4 как-то при использовании MAGIC3? MAGIC1 // can be placed wherever...

15
Кража ресурсов из ключей std :: map разрешена?

В C ++ нормально ли красть ресурсы с карты, которая мне больше не нужна? Точнее, предположим, что у меня есть ключи std::mapс std::stringключами, и я хочу создать из него вектор путем кражи ресурсов mapс использованием ключей s std::move. Обратите внимание, что такой доступ для записи ключей...

15
Способ времени компиляции для определения наименее дорогого типа аргумента

У меня есть шаблон, который выглядит так template <typename T> class Foo { public: Foo(const T& t) : _t(t) {} private: const T _t; }; Есть ли хитрый способ метапрограммирования шаблонов, чтобы избежать использования константной ссылки в тех случаях, когда тип аргумента тривиален, как bool...

15
Убедитесь, что во время компиляции метод вызывается ровно в одном месте

Мне любопытно, можно ли гарантировать, что во время компиляции метод вызывается ровно в одном месте. Обратите внимание, что все в порядке, если функция вызывается более одного раза (например, в цикле), но ее не следует вызывать в двух отдельных циклах. Это может быть разбито на две части, меня...

15
Как создать перестановку в c ++ с использованием STL для числа мест меньше, чем общая длина

У меня есть c++ vectorс std::pair<unsigned long, unsigned long>объектами. Я пытаюсь генерировать перестановки объектов вектора с помощью std::next_permutation(). Однако, я хочу, чтобы перестановки имели заданный размер, вы знаете, аналогично permutationsфункции в python, где указан размер...

14
std :: bit_cast с std :: array

В своем недавнем выступлении « Обработка типов в современном C ++» Тимур Думлер сказал, что std::bit_castего нельзя использовать для floatпреобразования битов в unsigned char[4]массив, потому что массивы в стиле C не могут быть возвращены из функции. Мы должны либо использовать, std::memcpyлибо...

14
Функция шаблона не работает для функции указатель на член, принимающей const ref

В последнее время я написал шаблонную функцию для решения некоторых повторений кода. Это выглядит так: template<class T, class R, class... Args> R call_or_throw(const std::weak_ptr<T>& ptr, const std::string& error, R (T::*fun)(Args...), Args... args) { if (auto sp = ptr.lock())...