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

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

3
Самый быстрый способ найти минимальное произведение из 2 элементов массива, содержащих более 200 000 элементов
У меня есть массив a[n]. Номер nвводится нами. Мне нужно найти минимальный продукт a[i]и a[j]если: 1) abs(i - j) > k 2) a[i] * a[j]минимизируется Вот мое решение (очень наивное): #include <iostream> using namespace std; #define ll long long int main() { ll n,k; cin >> n >> k; ll …

4
Является ли объяснение расслабленного порядка ошибочным в сравнении?
В документации std::memory_orderна cppreference.com есть пример непринужденного заказа: Расслабленный заказ Маркированные атомарные операции memory_order_relaxedне являются операциями синхронизации; они не навязывают порядок между одновременными обращениями к памяти. Они гарантируют только атомарность и согласованность порядка модификации. Например, с х и у изначально ноль, // Thread 1: r1 = y.load(std::memory_order_relaxed); // A x.store(r1, …

2
если constexpr с static_assert в лямбде, какой компилятор правильный?
Когда мы хотим использовать a static_assertв a, if constexprмы должны сделать условие зависимым от некоторого параметра шаблона. Интересно, что gcc и clang не согласны, когда код обернут в лямбду. Следующий код компилируется с помощью gcc, но clang запускает утверждение, даже если значение if constexprне может быть истинным. #include <utility> template<typename …

1
Возможная ошибка компилятора в MSVC
Следующий код компилируется с помощью gcc и clang (и многих других компиляторов C ++ 11) #include <stdint.h> typedef int datatype; template <typename T> struct to_datatype {}; template <> struct to_datatype<int16_t> { static constexpr datatype value = 1; }; template <typename T> class data { public: data(datatype dt = to_datatype<T>::value) {} …
13 c++  c++11  visual-c++ 

1
Почему swd вызывается std :: sort, только если в моем контейнере более 32 элементов?
Здравствуйте, у меня есть простой вопрос: class A { public: A(int); A(const A&); A& operator=(const A&); ~A(); private: int* ptr_; friend bool operator<(const A&, const A&); friend void swap(A&, A&); }; A::A(int x) : ptr_(new int(x)) {} A::A(const A& rhs) : ptr_(rhs.ptr_ ? new int(*rhs.ptr_) : nullptr) {} A& A::operator …
13 c++  std  swap 

2
Как определить, какие заголовочные файлы включить?
Скажем, у меня есть ниже (очень простой) код. #include <iostream> int main() { std::cout << std::stoi("12"); } Это прекрасно компилируется как на g ++, так и на clang; однако он не может быть скомпилирован в MSVC со следующей ошибкой: ошибка C2039: «Stoi»: не является членом «STD» ошибка C3861: «стои»: идентификатор …
13 c++ 

1
Почему типы выражений менялись в C ++ между версиями?
Я пытаюсь понять типы выражений C ++, и чем больше я читаю, тем больше я запутался, поскольку нахожу черновик C ++ очень сложным для восприятия и поэтому предпочитаю другие ресурсы, но они либо противоречат друг другу, либо не учитывают, что формулировка и определение между версиями C ++ сильно изменяются. Далее …
13 c++  c++11  c++14  c++17  c++20 

1
Неоднозначный оператор в gcc
Я сделал шаблон функции для печати некоторых контейнеров stl #include <iostream> #include <vector> #include <string> template <template <typename, typename> class C, typename T, typename A> std::ostream& operator<<(std::ostream& os, const C<T, A>& container) { for (auto& elem : container) { os << elem << " "; } return os; } int …
13 c++  c++17 


1
Почему одноименные локальные переменные extern в разных блоках получают разные связи между компиляторами в c ++?
Пока я только проверял, какие связи предоставляются внешним локальным переменным, я обнаружил, что некоторые компиляторы ведут себя по- разному. например, если я тестировал приведенный ниже код, как вы видите в комментариях, переменные vars имеют разные связи // foo.cpp int var = 10; // external linkage // main.cpp #include <iostream> static …
12 c++  g++  clang++  extern  linkage 

1
Требуется ли для «равенства_компараблей_схем» `общего_референции`?
Концепцияequality_­comparable_with<T, U> призвана заявить , что объекты типа Tи Uмогут быть сравнены равны друг другу, и если они есть, то это имеет ожидаемый смысл. Хорошо. Тем не менее, эта концепция также требует common_reference_t<T&, U&>существования. common_referenceПохоже, что основным стимулом для его сопутствующей функциональности является предоставление возможности прокси-итераторам иметь возможность представлять отношения …

1
Возможное неопределенное поведение в примитивной реализации static_vector
tl; dr: я думаю, что мой static_vector имеет неопределенное поведение, но я не могу его найти. Эта проблема на Microsoft Visual C ++ 17. У меня есть эта простая и незавершенная реализация static_vector, то есть вектор с фиксированной емкостью, который может быть выделен в стеке. Это программа C ++ 17, …

2
Можно ли объединить две строки типа `const char *` во время компиляции?
Очевидно, что мы можем объединить два строковых литерала в constexprфункции, но как насчет объединения строкового литерала со строкой, возвращенной другой constexprфункцией, как в коде ниже? template <class T> constexpr const char * get_arithmetic_size() { switch (sizeof(T)) { case 1: return "1"; case 2: return "2"; case 4: return "4"; case …
12 c++  c++17 

1
Определение C ++ 20 вне класса в шаблонном классе
Вплоть до C ++ 20 стандарта C ++, когда мы хотели определить внеклассный оператор, который использует некоторые закрытые члены шаблонного класса, мы использовали конструкцию, подобную этой: template <typename T> class Foo; template <typename T> constexpr bool operator==(T lhs, const Foo<T>& rhs); template <typename T> class Foo { public: constexpr Foo(T …
12 c++  templates  c++20 

1
Стандартно ли гарантировано, что лямбда без захвата будет пустой?
Я ищу способ идентифицировать пустые (без захвата) лямбды из других лямбд в функции шаблона. В настоящее время я использую C ++ 17, но мне тоже интересно узнать ответы на C ++ 20. Мой код выглядит так: template<typename T> auto func(T lambda) { // The aguments of the lambdas are unknown …
12 c++  lambda  c++17  c++20 

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