Запитання з тегом «c++»

C ++ - мова програмування загального призначення. Спочатку він був розроблений як розширення до C і має подібний синтаксис, але зараз це зовсім інша мова. Використовуйте цей тег для запитань про код (який потрібно) зібрати за допомогою компілятора C ++. Використовуйте тег, що стосується версії, для питань, пов’язаних із конкретною стандартною редакцією [C ++ 11], [C ++ 14], [C ++ 17] або [C ++ 20] тощо.


2
Чарівне число в boost :: hash_combine
Функція boost::hash_combineшаблону приймає посилання на хеш (викликається seed) та об'єкт v. Згідно з документами , він поєднується seedз хешем vby seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2); Я бачу, що це детерміновано. Я розумію, чому використовується XOR. Б'юся об заклад, додавання допомагає широко зіставляти …

4
Чи передаються вектори функціям за значенням або за посиланням у C ++
Я кодую на C ++. Якщо у мене є якась функція, void foo(vector<int> test)і я викликаю її у своїй програмі, чи буде вектор передаватися за значенням чи посиланням? Я не впевнений, бо знаю, що вектори та масиви схожі, і така функція, як void bar(int test[])передаватиме тест за посиланням (покажчиком?), А …
94 c++  arrays  vector 

6
Обчислювальна довжина рядка C під час компіляції. Це справді constexpr?
Я намагаюся обчислити довжину рядкового літералу під час компіляції. Для цього я використовую такий код: #include <cstdio> int constexpr length(const char* str) { return *str ? 1 + length(str + 1) : 0; } int main() { printf("%d %d", length("abcd"), length("abcdefgh")); } Все працює належним чином, програма друкує 4 і …

2
std :: back_inserter для std :: set?
Я думаю, це просте запитання. Мені потрібно зробити щось подібне: std::set<int> s1, s2; s1 = getAnExcitingSet(); std::transform(s1.begin(), s1.end(), std::back_inserter(s2), ExcitingUnaryFunctor()); Звичайно, std::back_inserterне працює, оскільки немає push_back. std::inserterтакож потрібен ітератор? Я не використовував, std::inserterтому не знаю, що робити. Хтось має ідею? Звичайно, інший мій варіант - використовувати вектор для s2, а …
94 c++  algorithm  stl 

17
Який найпростіший спосіб перевірити, чи число є ступенем 2 в C ++?
Мені потрібна така функція: // return true iff 'n' is a power of 2, e.g. // is_power_of_2(16) => true is_power_of_2(3) => false bool is_power_of_2(int n); Хтось може підказати, як я можу це написати? Чи можете ви сказати мені хороший веб-сайт, де можна знайти такий алгоритм?

7
M_PI працює з math.h, але не з cmath у Visual Studio
Я використовую Visual Studio 2010. Я читав, що в C ++ краще використовувати, <cmath>а не <math.h>. Але в програмі я намагаюся написати (консольний додаток Win32, порожній проект), якщо пишу: #define _USE_MATH_DEFINES #include <math.h> він компілюється, тоді як якщо я пишу #define _USE_MATH_DEFINES #include <cmath> це не вдається з помилка C2065: …

3
навіщо явно видаляти конструктор?
Коли / чому я хочу явно видалити свій конструктор? Якщо припустити, що причина полягає у тому, щоб запобігти його використанню, чому б просто не зробити це private? class Foo { public: Foo() = delete; };
94 c++ 

4
оператор << повинен приймати рівно один аргумент
ах #include "logic.h" ... class A { friend ostream&amp; operator&lt;&lt;(ostream&amp;, A&amp;); ... }; logic.cpp #include "a.h" ... ostream&amp; logic::operator&lt;&lt;(ostream&amp; os, A&amp; a) { ... } ... Коли я компілюю, він говорить: std :: ostream &amp; logic :: operator &lt;&lt; (std :: ostream &amp;, A &amp;) 'повинен приймати рівно один аргумент. …

5
Як вказати перевагу шляху бібліотеки?
Я складаю програму на C ++ за допомогою g++і ld. У мене є .soбібліотека, якою я хочу користуватися під час встановлення посилань. Однак бібліотека з однойменною назвою існує /usr/local/libі ldвибирає цю бібліотеку замість тієї, яку я прямо вказую. Як я можу це виправити? У наведених нижче прикладах, моя бібліотека файлу …
94 c++  linker  g++ 



8
Чому макроси препроцесора є злими і які альтернативи?
Я завжди про це питав, але ніколи не отримував справді хорошої відповіді; Я думаю, що майже будь-який програміст ще до написання першого "Hello World" стикався з фразою типу "макрос ніколи не можна використовувати", "макрос - це зло" тощо, моє запитання: чому? З новим C ++ 11 чи існує реальна альтернатива …

4
Як отримати тривалість, як int milli's та float seconds з <chrono>?
Я намагаюся використовувати бібліотеку chrono для таймерів та тривалості. Я хочу мати можливість мати Duration frameStart;(від запуску програми) і Duration frameDelta;(час між кадрами) Мені потрібно вміти отримувати frameDeltaтривалість як мілісекунди та плаваючі секунди. Як це зробити за допомогою нових &lt;chrono&gt;бібліотек c ++ 11 ? Я працював над цим і гуглив …
94 c++  c++11  timer  chrono 


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.