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

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

3
С ++ vector's insert и push_back разница
Я хочу знать , что есть разница (s) между vector«s push_backи insertфункциями. Есть ли структурные различия? Есть ли действительно большая разница в производительности?
79 c++ 


6
Разрешено ли компилятору оптимизировать локальную изменчивую переменную?
Разрешено ли компилятору оптимизировать это (согласно стандарту C ++ 17): int fn() { volatile int x = 0; return x; } к этому? int fn() { return 0; } Если да, то почему? Если нет, то почему? Вот некоторые размышления по этому поводу: текущие компиляторы компилируются fn()как локальная переменная, помещенная …


8
Неопределенная ссылка на static const int
Я сегодня столкнулся с интересной проблемой. Рассмотрим этот простой пример: template <typename T> void foo(const T & a) { /* code */ } // This would also fail // void foo(const int & a) { /* code */ } class Bar { public: static const int kConst = 1; void …
79 c++  gcc 

24
Поиск в отсортированном и повернутом массиве
Готовясь к собеседованию, я наткнулся на интересный вопрос: Вам был предоставлен массив, который сортируется, а затем вращается. Например: Пусть arr = [1,2,3,4,5], что отсортировано Дважды поверните его вправо, чтобы дать [4,5,1,2,3]. Теперь, как лучше всего искать в этом отсортированном + повернутом массиве? Можно повернуть массив и затем выполнить двоичный поиск. …
79 c++  c  arrays  algorithm 

8
Вычитание упакованных 8-битных целых чисел в 64-битное целое на 1 параллельно, SWAR без аппаратного SIMD
Если у меня есть 64-разрядное целое число, которое я интерпретирую как массив упакованных 8-разрядных целых чисел с 8 элементами. Мне нужно вычесть константу 1из каждого упакованного целого числа при обработке переполнения без влияния одного элемента на результат другого элемента. У меня есть этот код на данный момент, и он работает, …
77 c++  c  bit-manipulation  simd  swar 

7
Могу ли я использовать NULL в качестве замены для значения 0?
Могу ли я использовать NULLуказатель в качестве замены для значения 0? Или что-то не так в этом? Как, например: int i = NULL; как замена для: int i = 0; В качестве эксперимента я скомпилировал следующий код: #include <stdio.h> int main(void) { int i = NULL; printf("%d",i); return 0; } …

10
Использование std :: vector для просмотра сырой памяти
Я использую внешнюю библиотеку, которая в какой-то момент дает мне необработанный указатель на массив целых чисел и размер. Теперь я хотел бы использовать std::vectorдля доступа и изменения этих значений на месте, а не доступ к ним с помощью необработанных указателей. Вот примерный пример, который объясняет суть: size_t size = 0; …
71 c++  c++11  vector  stdvector 

7
'New' и 'delete' устарели в C ++?
Я наткнулся на тест, который включал объявление массива с различными размерами. Первое, что пришло мне в голову, это то, что мне нужно будет использовать динамическое распределение с newкомандой, например так: while(T--) { int N; cin >> N; int *array = new int[N]; // Do something with 'array' delete[] array; } …

3
Многопоточная программа зависла в оптимизированном режиме, но нормально работает в -O0
Я написал простую многопоточную программу следующим образом: static bool finished = false; int func() { size_t i = 0; while (!finished) ++i; return i; } int main() { auto result=std::async(std::launch::async, func); std::this_thread::sleep_for(std::chrono::seconds(1)); finished=true; std::cout<<"result ="<<result.get(); std::cout<<"\nmain thread id="<<std::this_thread::get_id()<<std::endl; } Он ведет себя нормально в режиме отладки в Visual studio или …

2
Как работает этот шаблон кода для получения размера массива?
Интересно, почему этот вид кода может получить размер тестового массива? Я не знаком с грамматикой в ​​шаблоне. Может быть, кто-то может объяснить смысл кода ниже template<typename,size_t>. Кроме того, ссылка ссылка также предпочтительнее. #define dimof(array) (sizeof(DimofSizeHelper(array))) template <typename T, size_t N> char(&DimofSizeHelper(T(&array)[N]))[N]; void InitDynCalls() { char test[20]; size_t n = dimof(test); …
61 c++  visual-c++ 

10
Переполнение со знаком в C ++ и неопределенное поведение (UB)
Мне интересно об использовании кода, как следующий int result = 0; int factor = 1; for (...) { result = ... factor *= 10; } return result; Если цикл повторяется с течением nвремени, то factorон умножается на 10точное nвремя. Тем не менее, factorиспользуется только после умножения на 10общее количество n-1раз. …

5
Как получить адрес лямбда-функции C ++ внутри самой лямбды?
Я пытаюсь выяснить, как получить адрес лямбда-функции внутри себя. Вот пример кода: []() { std::cout << "Address of this lambda function is => " << ???? }(); Я знаю, что могу перехватить лямбду в переменной и напечатать адрес, но я хочу сделать это на месте, когда эта анонимная функция выполняется. …
53 c++  c++11  lambda  c++14  c++17 

3
Оператор равенства не определен для пользовательской реализации оператора космического корабля в C ++ 20
Я столкнулся со странным поведением с новым оператором космического корабля <=>в C ++ 20. Я использую компилятор Visual Studio 2019 с /std:c++latest. Этот код компилируется нормально, как и ожидалось: #include <compare> struct X { int Dummy = 0; auto operator<=>(const X&) const = default; // Default implementation }; int main() …

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