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

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

1
Яка мета std :: прання?
P0137 вводить шаблон функції std::launderта вносить багато, багато змін до стандарту в розділи, що стосуються об'єднань, часу життя та покажчиків. Яку проблему вирішує цей документ? Які зміни в мові я повинен знати? А що ми з launderвами?

19
Як видалити дублювання коду між аналогічними функціями const і non-const?
Скажімо, у мене є таке, class Xде я хочу повернути доступ до внутрішнього члена: class Z { // details }; class X { std::vector<Z> vecZ; public: Z& Z(size_t index) { // massive amounts of code for validating index Z& ret = vecZ[index]; // even more code for determining that the …

21
Повернення декількох значень з функції C ++
Чи є бажаний спосіб повернути декілька значень з функції C ++? Наприклад, уявіть собі функцію, яка ділить два цілих числа і повертає як частник, так і решту. Один із способів, яким я часто бачу, - це використання еталонних параметрів: void divide(int dividend, int divisor, int& quotient, int& remainder); Варіація полягає …
242 c++ 


6
Чому використовують неназвані простори імен та які їх переваги?
Я щойно приєднався до нового програмного проекту C ++ і намагаюся зрозуміти дизайн. Проект часто використовує безіменні простори імен. Наприклад, щось подібне може статися у файлі визначення класу: // newusertype.cc namespace { const int SIZE_OF_ARRAY_X; const int SIZE_OF_ARRAY_Y; bool getState(userType*,otherUserType*); } newusertype::newusertype(...) {... Які міркування щодо дизайну можуть спричинити використання …
242 c++  oop  namespaces 

21
Як я можу перевірити, чи починається рядок C ++ std :: з певного рядка, і перетворити підрядку до int?
Як я реалізую наступне (псевдокод Python) у C ++? if argv[1].startswith('--foo='): foo_value = int(argv[1][len('--foo='):]) (Наприклад, якщо argv[1]є --foo=98, то foo_valueє98 .) Оновлення: я не вагаюся вивчати Boost, оскільки я просто розглядаю внесення дуже невеликих змін у простий маленький інструмент командного рядка (я б краще не навчився зв’язуватись і використовувати Boost …

4
(-2147483648> 0) повертає true у C ++?
-2147483648 - найменше ціле число для цілого типу з 32 бітами, але, здається, воно переповниться у if(...)реченні: if (-2147483648 > 0) std::cout << "true"; else std::cout << "false"; Це надрукується trueв моєму тестуванні. Однак якщо ми приведемо -2147483648 до цілого числа, результат буде іншим: if (int(-2147483648) > 0) std::cout << …


12
Запис бінарного файлу на C ++ дуже швидко
Я намагаюся записати величезну кількість даних на свій SSD (твердотільний накопичувач). І з величезних сум я маю на увазі 80 Гб. Я переглянув Інтернет для пошуку рішень, але найкраще, що я придумав, це: #include <fstream> const unsigned long long size = 64ULL*1024ULL*1024ULL; unsigned long long a[size]; int main() { std::fstream …

6
Як правильно реалізувати власні ітератори та const_iterators?
У мене є спеціальний клас контейнерів, для якого я б хотів написати iteratorта const_iteratorкласи. Я ніколи цього не робив, і мені не вдалося знайти відповідного способу. Які вказівки щодо створення ітератора, і що я повинен знати? Я також хотів би уникнути дублювання коду (я відчуваю це const_iteratorі iteratorподіляю багато речей; …

10
Як підсумувати елементи вектора C ++?
Які хороші способи знаходження суми всіх елементів у a std::vector? Припустимо, у мене вектор std::vector<int> vectorз кількома елементами в ньому. Тепер я хочу знайти суму всіх елементів. Які існують різні способи для одного?
240 c++  stl  vector 

8
Чи можливо оголосити дві змінні різних типів у циклі for?
Чи можливо оголосити дві змінні різних типів в тілі ініціалізації циклу a для C ++? Наприклад: for(int i=0,j=0 ... визначає два цілих числа. Чи можу я визначити а intта а charв тілі ініціалізації? Як би це було зроблено?


27
Навіщо використовувати ітератори замість масивів індексів?
Візьміть наступні два рядки коду: for (int i = 0; i < some_vector.size(); i++) { //do stuff } І це: for (some_iterator = some_vector.begin(); some_iterator != some_vector.end(); some_iterator++) { //do stuff } Мені кажуть, що другий спосіб є кращим. Чому саме це?

12
Чи можете ви видалити елементи зі списку std :: під час ітерації через нього?
У мене код такий: for (std::list<item*>::iterator i=items.begin();i!=items.end();i++) { bool isActive = (*i)->update(); //if (!isActive) // items.remove(*i); //else other_code_involving(*i); } items.remove_if(CheckItemNotActive); Я хотів би видалити неактивні елементи відразу після їх оновлення, щоб уникнути повторного перегляду списку. Але якщо додати коментовані рядки, я отримаю помилку, коли потрапляю до i++: "Список ітераторів не …
239 c++  list  std 

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