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

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

2
Как инициализировать вектор пар C ++ 17 с необязательным элементом
В C ++ 17, как вы объявляете и инициализируете вектор пар (или кортежей) с необязательным элементом? std::vector<std::pair<int, optional<bool> > > vec1 = { {1, true}, {2, false}, {3, nullptr}}; У меня есть пара, где второй элемент может быть нулевым / необязательным.

4
Перегрузка функции с помощью шаблонов
Я пытаюсь определить функцию, используя шаблоны, и я хочу, чтобы typename было либо int, либо anEnum (конкретное перечисление, которое я определил). Я пробовал следующее, но мне не удалось: template <int | anEnum T> // or <int T, anEnum T> or <int, anEnum T> bool isFunction(const T &aVariable){} Я пытаюсь использовать …

3
Инкремент указателя на динамический массив размером 0 не определен?
AFAIK, хотя мы не можем создать массив статической памяти размером 0, но мы можем сделать это с динамическими: int a[0]{}; // Compile-time error int* p = new int[0]; // Is well-defined Как я читал, pдействует как элемент «один конец». Я могу напечатать адрес, на который pуказывает. if(p) cout << p …

2
Это законно, чтобы new-allocate указатель на функцию?
Указатели на функции не являются обычными указателями данных, поскольку они не могут быть сохранены в указателе void *. Тем не менее, кажется, что я могу сохранить копию указателя функции в динамической памяти (в gcc и clang), как в коде ниже. Является ли такой код законным в соответствии со стандартом C …
33 c++ 


3
C ++ decltype и круглые скобки - почему?
Тема обсуждалась раньше , но это не дубликат. Когда кто-то спрашивает о разнице между decltype(a)и decltype((a)), обычный ответ - aэто переменная, (a)это выражение. Я считаю этот ответ неудовлетворительным. Во-первых, aэто также выражение. Варианты основного выражения включают, среди прочего: (выражение) ID-выражение Что еще более важно, формулировка для decltype рассматривает скобки очень …

4
Почему два предложения с использованием одного и того же типа рассматриваются как неоднозначные в gcc
У меня есть два базовых класса с использованием предложений class MultiCmdQueueCallback { using NetworkPacket = Networking::NetworkPacket; .... } class PlcMsgFactoryImplCallback { using NetworkPacket = Networking::NetworkPacket; .... } Затем я объявляю класс class PlcNetwork : public RouterCallback, public PlcMsgFactoryImplCallback, public MultiCmdQueueCallback { private: void sendNetworkPacket(const NetworkPacket &pdu); } затем компилятор помечает …

2
Странное поведение с полями классов при добавлении в std :: vector
Я обнаружил очень странное поведение (на Clang и GCC) в следующей ситуации. У меня есть вектор, nodesс одним элементом, экземпляр класса Node. Затем я вызываю функцию, nodes[0]которая добавляет новый Nodeвектор. При добавлении нового узла поля вызывающего объекта сбрасываются! Однако они, похоже, снова возвращаются в нормальное состояние после завершения функции. Я …

6
Может ли отсутствующий #include нарушить работу программы во время выполнения?
Есть ли какой-нибудь случай, когда пропадание #includeможет сломать программное обеспечение во время выполнения, в то время как сборка все еще проходит? Другими словами, возможно ли, что #include "some/code.h" complexLogic(); cleverAlgorithms(); а также complexLogic(); cleverAlgorithms(); будут ли оба успешно строить, но вести себя по-разному?
31 c++ 

4
Как называется (…) в C и C ++?
Одним из применений ...является обозначение переменных элементов в C и C ++. Как это называется? Это классифицируется как оператор или что-то еще, когда используется таким образом? Любые другие детали, касающиеся ...? Изменить: я знаю цель .... Я спрашиваю о его названии и классификации, которые, я надеюсь, похожи как на C, …

6
Безопасно ли поменять местами два разных вектора в C ++, используя метод std :: vector :: swap?
Предположим, что у вас есть следующий код: #include <iostream> #include <string> #include <vector> int main() { std::vector<std::string> First{"example", "second" , "C++" , "Hello world" }; std::vector<std::string> Second{"Hello"}; First.swap(Second); for(auto a : Second) std::cout << a << "\n"; return 0; } Представьте, что вектора нет std::string, но классы: std::vector<Widget> WidgetVector; std::vector<Widget2> …
30 c++  c++11  vector  stdvector  swap 

4
Копирование структур с неинициализированными членами
Допустимо ли копировать структуру, некоторые члены которой не инициализированы? Я подозреваю, что это неопределенное поведение, но если это так, то оставлять неинициализированные члены в структуре (даже если эти члены никогда не используются напрямую) довольно опасно. Поэтому мне интересно, есть ли что-то в стандарте, что позволяет это. Например, это действительно? struct …

2
Почему `std :: string :: find ()` не возвращает конечный итератор при сбоях?
Я считаю, что поведение std::string::findнесовместимо со стандартными контейнерами C ++. Например std::map<int, int> myMap = {{1, 2}}; auto it = myMap.find(10); // it == myMap.end() Но для строки, std::string myStr = "hello"; auto it = myStr.find('!'); // it == std::string::npos Почему бы не myStr.find('!')вернуть неудачу myStr.end()вместо std::string::npos? Поскольку std::stringон несколько …

2
Почему std :: hash не гарантированно является детерминированным?
Далее мы используем N4140 (C ++ 14 Standard). В соответствии с § 17.6.3.4 Хеш-требованиями , Возвращаемое значение должно зависеть только от аргумента k для продолжительности программы . [Примечание: Таким образом, все вычисления выражения h(k)с одинаковым значением kдают один и тот же результат для данного выполнения программы . - конец примечания] …

1
Счетчики времени компиляции C ++, вновь
TL; DR Прежде чем пытаться прочитать весь этот пост, знайте, что: решение поставленной проблемы было найдено мной , но я все еще хочу знать, является ли анализ правильным; Я упаковал решение в fameta::counterкласс, который решает несколько оставшихся уловок. Вы можете найти это на github ; Вы можете видеть это на …

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