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

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

6
Чому вектор <bool> не є контейнером STL?
Пункт 18 книги Скотта Мейєрса « Ефективний STL: 50 конкретних способів покращити використання стандартної бібліотеки шаблонів» говорить про те, щоб уникати, vector &lt;bool&gt;оскільки це не контейнер STL і він насправді не містить bools. Наступний код: vector &lt;bool&gt; v; bool *pb =&amp;v[0]; не буде компілювати, порушуючи вимоги щодо контейнерів STL. Помилка: …

6
Сучасний спосіб фільтрувати контейнер STL?
Повертаючись до C ++ після років C #, мені було цікаво, яким буде сучасний - читайте: C ++ 11 - спосіб фільтрації масиву, тобто як ми можемо досягти чогось подібного до цього запиту Linq: var filteredElements = elements.Where(elm =&gt; elm.filterProperty == true); Для того, щоб відфільтрувати вектор елементів ( stringsзаради …
99 c++  c++11  stl 

16
Чисті способи написання декількох циклів "для"
Для масиву з декількома розмірами нам зазвичай потрібно написати forцикл для кожного його виміру. Наприклад: vector&lt; vector&lt; vector&lt;int&gt; &gt; &gt; A; for (int k=0; k&lt;A.size(); k++) { for (int i=0; i&lt;A[k].size(); i++) { for (int j=0; j&lt;A[k][i].size(); j++) { do_something_on_A(A[k][i][j]); } } } double B[10][8][5]; for (int k=0; k&lt;10; k++) …
98 c++  for-loop 

4
Яка правильна відповідь на cout << a ++ << a ;?
Нещодавно в інтерв'ю з'явилося таке об'єктивне питання типу. int a = 0; cout &lt;&lt; a++ &lt;&lt; a; Відповіді: а. 10 б. 01 c. невизначена поведінка Я відповів на вибір b, тобто вихід буде "01". Але на мій подив пізніше мені інтерв'ю сказав, що правильна відповідь - це варіант c: undefined. …
98 c++  c++-faq 

14
Чи слід успадковувати від std :: виключення?
Я бачив щонайменше одне надійне джерело (клас C ++, який я взяв), рекомендую, щоб специфічні для програми класи винятків у C ++ були успадковані від std::exception. Мені не зрозуміло переваги такого підходу. У C # причини успадкування з ApplicationExceptionних ясні: ви отримуєте кілька корисних методів, властивостей та конструкторів і просто …

4
Чому ми копіюємо тоді переміщення?
Десь я побачив код, у якому хтось вирішив скопіювати об’єкт і згодом перемістити його до члена даних класу. Це залишило мене в замішанні в тому, що я думав, що вся справа в тому, щоб уникнути копіювання. Ось приклад: struct S { S(std::string str) : data(std::move(str)) {} }; Ось мої запитання: …

6
(Як) я можу порахувати предмети в перерахунку?
Це питання мені прийшло в голову, коли у мене було щось подібне enum Folders {FA, FB, FC}; і хотів створити масив контейнерів для кожної папки: ContainerClass*m_containers[3]; .... m_containers[FA] = ...; // etc. (Використання карти це набагато елегантніше використання: std::map&lt;Folders, ContainerClass*&gt; m_containers;) Але повернусь до мого початкового запитання: Що робити, якщо …
98 c++  count  enumeration 

7
Попередження C ++: ділення подвійного на нуль
Випадок 1: #include &lt;iostream&gt; int main() { double d = 15.50; std::cout&lt;&lt;(d/0.0)&lt;&lt;std::endl; } Він збирається без жодних попереджень та відбитків inf. ОК, C ++ може обробляти поділ на нуль ( дивіться це в прямому ефірі ). Але, Випадок 2: #include &lt;iostream&gt; int main() { double d = 15.50; std::cout&lt;&lt;(d/0)&lt;&lt;std::endl; } …

9
як перетворити з int в char *?
Єдиний спосіб мене знає: #include &lt;sstream&gt; #include &lt;string.h&gt; using namespace std; int main() { int number=33; stringstream strs; strs &lt;&lt; number; string temp_str = strs.str(); char* char_type = (char*) temp_str.c_str(); } Але чи є метод із меншим типом?

2
Які правила для токена “…” у контексті різних шаблонів?
У C ++ 11 є різні шаблони на зразок цього: template&lt; class T, class... Args &gt; unique_ptr&lt;T&gt; make_unique( Args&amp;&amp;... args ) { return unique_ptr&lt;T&gt;(new T(std::forward&lt;Args&gt;(args)...)); } У цьому є деякі цікавості: Вираз std::forward&lt;Args&gt;(args)...використовує як Argsі argsлише один ...маркер. Крім того std::forward, це неваріадична функція шаблону, яка бере лише один параметр …

7
Чому об’єкти одного класу мають доступ до приватних даних один одного?
Чому об’єкти одного класу мають доступ до приватних даних один одного? class TrivialClass { public: TrivialClass(const std::string&amp; data) : mData(data) {}; const std::string&amp; getData(const TrivialClass&amp; rhs) const { return rhs.mData; }; private: std::string mData; }; int main() { TrivialClass a("fish"); TrivialClass b("heads"); std::cout &lt;&lt; "b via a = " &lt;&lt; …

6
Ініціалізація масиву членів в ініціалізаторі конструктора
class C { public: C() : arr({1,2,3}) //doesn't compile {} /* C() : arr{1,2,3} //doesn't compile either {} */ private: int arr[3]; }; Я вважаю, що причина полягає в тому, що масиви можна ініціалізувати лише з =синтаксису, тобто: int arr[3] = {1,3,4}; Запитання Як я можу робити те, що хочу …

5
Як зробити так, щоб збірка Visual Studio була багатослівною?
Мені потрібно влаштувати кожен прапор, кожен перемикач, який використовується у процесі збирання бінарних файлів Visual Studio. Я намагався отримати багатослівний вихід, використовуючи vcbuild, але не зміг. Що я повинен зробити, щоб побачити все, що виконується Visual Studio для мене? Не потрібно отримувати вихід у вікні збірки. Будь-де було б добре.

5
Чому аргумент типу мапи C ++ вимагає порожнього конструктора при використанні []?
Див. Також стандартний перелік С ++ та типи, що створюються за замовчуванням Не головна проблема, просто дратує, оскільки я не хочу, щоб мій клас ніколи не створювався без конкретних аргументів. #include &lt;map&gt; struct MyClass { MyClass(int t); }; int main() { std::map&lt;int, MyClass&gt; myMap; myMap[14] = MyClass(42); } Це дає …
98 c++  dictionary 

14
Як написати журнал бази (2) в c / c ++
Чи є спосіб написати функцію журналу (основа 2)? Мова С має 2 вбудовані функції - &gt;&gt; 1. logщо є основою e. 2. log10основа 10; Але мені потрібна функція журналу бази 2. Як це розрахувати.
98 c++  c 

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