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

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

13
Незвичне використання файлу .h у C
Під час читання статті про фільтрацію я виявив дивне використання .hфайлу - використовуйте його для заповнення масиву коефіцієнтів: #define N 100 // filter order float h[N] = { #include "f1.h" }; //insert coefficients of filter float x[N]; float y[N]; short my_FIR(short sample_data) { float result = 0; for ( int …
77 c++  c 

2
“Шаблон <>” проти “шаблон” без дужок - яка різниця?
Припустимо, я заявив: template &lt;typename T&gt; void foo(T&amp; t); Тепер, в чому різниця між template &lt;&gt; void foo&lt;int&gt;(int&amp; t); і template void foo&lt;int&gt;(int&amp; t); семантично? І чи мають шаблон-без-дужок та шаблон-з-порожніми дужками іншу семантику в інших контекстах? Пов’язане з: Як змусити конкретний екземпляр шаблону C ++ створити екземпляр?

3
Плутанина між порядком матриці C ++ та OpenGL (великі рядки проти основних стовпців)
Я грунтовно плутаюся з визначеннями матриць. У мене є клас матриці, який містить, як float[16]я вважав, головний ряд, на основі таких спостережень: float matrixA[16] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; float matrixB[4][4] = { { 0, 1, …
77 c++  math  opengl  matrix 

3
Розбиття рядків C ++ на кілька рядків (синтаксис коду, не розбір)
Не слід плутати з тим, як розділити рядок розумно, наприклад: Розділити рядок у C ++? Я трохи заплутаний щодо того, як розділити рядок на кілька рядків у C ++. Це звучить як просте запитання, але візьмемо такий приклад: #include &lt;iostream&gt; #include &lt;string&gt; main() { //Gives error std::string my_val ="Hello world, …

4
Чому std :: array не має конструктора, який приймає значення для масиву, яким потрібно заповнити?
Це відсутність std::array&lt;T,size&gt;::array(const T&amp; value); недогляд? Мені це здається дуже корисним, і динамічні контейнери (як std::vector) мають подібний конструктор. Я цілком усвідомлюю це std::array&lt;T,size&gt;::fill(const T&amp; value); але це не конструктор, і пам'ять спочатку обнуляється. Що робити, якщо я хочу, щоб все було -1як цей хлопець ?
77 c++  c++11  stdarray 

4
регулярний вираз c ++ 11 повільніший за python
привіт, я хотів би зрозуміти, чому наступний код, який робить розділений рядок розділений за допомогою регулярного виразу #include&lt;regex&gt; #include&lt;vector&gt; #include&lt;string&gt; std::vector&lt;std::string&gt; split(const std::string &amp;s){ static const std::regex rsplit(" +"); auto rit = std::sregex_token_iterator(s.begin(), s.end(), rsplit, -1); auto rend = std::sregex_token_iterator(); auto res = std::vector&lt;std::string&gt;(rit, rend); return res; } int main(){ …

3
тривіальний проти стандартного макета проти POD
Якщо говорити неспеціалістами, у чому різниця між тривіальними типами, типовими типами компонування та POD? Зокрема, я хочу визначити, чи new Tвідрізняється він від new T()будь-якого параметра шаблону T. Який із типів рис is_trivial, is_standard_layoutі чи is_podварто обирати? (Як побічне питання, чи можна будь-яку з цих властивостей типу реалізувати без магії …

13
Візьмемо адресу елемента масиву "минулий кінець" за допомогою індексу: законний за стандартом C ++ чи ні?
Я вже кілька разів бачив, як стверджується, що наступний код заборонений стандартом С ++: int array[5]; int *array_begin = &amp;array[0]; int *array_end = &amp;array[5]; Чи є &amp;array[5]законний код C ++ у цьому контексті? Я хотів би отримати відповідь із посиланням на Стандарт, якщо це можливо. Також було б цікаво дізнатись, …

10
Який розмір порожнечі?
Що дасть це твердження? void *p = malloc(sizeof(void)); Редагувати: розширення запитання. Якщо sizeof (void) дає 1 у компіляторі GCC, то виділяється 1 байт пам'яті, і вказівник p вказує на цей байт, а p ++ буде збільшено до 0x2346? Нехай p дорівнює 0x2345. Я говорю про p, а не * p.

1
Як використовувати boost bind з функцією-членом
Наступний код призводить до аварійного завершення роботи cl.exe (MS VS2005). Я намагаюся використовувати boost bind для створення функції для викликів методом myclass: #include "stdafx.h" #include &lt;boost/function.hpp&gt; #include &lt;boost/bind.hpp&gt; #include &lt;functional&gt; class myclass { public: void fun1() { printf("fun1()\n"); } void fun2(int i) { printf("fun2(%d)\n", i); } void testit() { boost::function&lt;void …

5
Чи успадковуються віртуальні деструктори?
Якщо у мене є базовий клас з віртуальним деструктором. Чи має похідний клас для оголошення віртуального деструктора? class base { public: virtual ~base () {} }; class derived : base { public: virtual ~derived () {} // 1) ~derived () {} // 2) }; Конкретні питання: Чи однакові 1) та …


11
Чи створює купа пам'яті (malloc / new) недетерміновану програму?
Кілька місяців тому я розпочав розробку програмного забезпечення для систем реального часу в C для космічних додатків, а також для мікроконтролерів з C ++. У таких системах існує принципове правило, що ніколи не слід створювати об'єкти купи (отже, не malloc / new), оскільки це робить програму недетермінованою . Я не …

10
ініціалізувати масив const в ініціалізаторі класу в C ++
У мене є такий клас на C ++: class a { const int b[2]; // other stuff follows // and here's the constructor a(void); } Питання полягає в тому, як мені ініціалізувати b у списку ініціалізації, враховуючи те, що я не можу ініціалізувати його всередині тіла функції конструктора, оскільки b …

7
Що ефективніше: повернути значення порівняно з передачею за посиланням?
На даний момент я вивчаю, як писати ефективний код на C ++, і з приводу викликів функцій мені приходить в голову питання. Порівняння цієї функції псевдокоду: not-void function-name () { do-something return value; } int main () { ... arg = function-name(); ... } з цією ідентичною інакше функцією псевдокоду: …

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