c++- все статьи тега ➜ страница 38
Проверить, если итератор действует
есть ли способ проверить, является ли итератор (будь то из вектора, списка, дека...) (все-таки) уникальным, т. е. не была признана недействительной? Я использую try -catch, но есть ли более прямой способ сделать это? пример: (который не работает) list<int> l; for (i = 1; i<10; i++) { l.push_back(i * 10); } itd = l.begin(); itd++; if (something) { l.erase(itd); } /* now, in other place.. check if itd points to somewhere meaningful */ if (itd != l.end()) { // blablabla ...
Получить путь к DLL во время выполнения
Я хочу получить dll путь к каталогу (или файлу) из его кода. (не программа .путь к файлу exe) Я пробовал несколько методов, которые я нашел:GetCurrentDir - возвращает текущий путь к каталогу.GetModuleFileName - возвращает путь к исполняемому файлу. Итак, как я могу узнать, в какой dll код находится ? Я ищу что-то похожее на C#'ы Assembly.GetExecutingAssembly ...
Удалить все элементы из C++ std:: vector
Я пытаюсь удалить все от std::vector С помощью следующего кода vector.erase( vector.begin(), vector.end() ); но это не работает. Update: разве clear не уничтожает элементы, удерживаемые вектором? Я не хочу этого, так как я все еще использую объекты, я просто хочу очистить контейнер ...
Преобразование класса C++ в JSON
Я хотел бы создать строку JSON, содержащую переменные экземпляра моего класса. например, class Example { std::string string; std::map<std::string, std:string> map; std::vector<int> vector; }; станет: { "string":"the-string-value", "map": { "key1":"val1", "key2":"val2" }, "vector":[1,2,3,4] } Я просмотрел несколько библиотек C++ для создания JSON, и все они кажутся невероятно сложными. Я бы хотел что-то похожее на Javascript J ...
Поддерживает ли C++ счетчики времени компиляции?
в целях самоанализа, иногда я хотел бы автоматически назначить серийные номера типов, или что-то подобное. к сожалению, шаблонное метапрограммирование по существу является функциональным языком, и как таковое не имеет глобальных переменных или модифицируемого состояния, которое реализовало бы такой счетчик. или это? пример кода по запросу: #include <iostream> int const a = counter_read; counter_inc; counter_inc; counter_inc; counter_inc; counter_inc; int const b = counter_read; int ...
C++ статический порядок инициализации
когда я использую статические переменные в C++, я часто хочу инициализировать одну переменную, передавая другую ее конструктору. Другими словами, Я хочу создать статические экземпляры, которые зависят друг от друга. в рамках одного .cpp или .H файл это не проблема: экземпляры будут созданы в том порядке, в котором они объявлены. Однако, когда вы хотите инициализировать статический экземпляр с экземпляром в другой единице компиляции, порядок, кажется, невозможно указать. Результат это то, что в ...
Почему c++11 constexpr настолько ограничительный?
Как вы, наверное, знаете, C++11 вводит constexpr ключевое слово. C++11 ввел ключевое слово constexpr, которое позволяет пользователю гарантируйте, что конструктор функции или объекта является временем компиляции постоянный. [...] Это позволяет компилятору понять и проверить, что [имя функции] является константа времени компиляции. мой вопрос почему такие строгие ограничения на форму функции, которые могут быть объявлены. Я понимаю желание гарантировать, что функция чиста, но поду ...
Неизвестная версия компилятора при компиляции Boost с MSVC 14.0 (VS 2015)
Я получаю "Неизвестная версия компилятора - пожалуйста, запустите configure tests и сообщите о результатах" при попытке скомпилировать библиотеку Boost на моем компьютере. У меня есть самый последний импульс (на дату публикации) - 1.58.0. Не повышает поддержку MSVC 14.0, пока? Как мне "запустить тесты настройки"? . ...
Силу в C++ во время компиляции ошибка/предупреждение о неявном проваливаются в переключатель
switch операторы могут быть очень полезны, но приводят к общей ошибке, когда программист забыл оператор break: switch(val) { case 0: foo(); break; case 1: bar(); // oops case 2: baz(); break; default: roomba(); } вы не получите предупреждение, очевидно, так как иногда проваливаются явно нужные. Хороший стиль кодирования предлагает комментировать, когда ваше падение преднамеренно, но иногда этого недостаточно. Я уверен, ...
Имеют ли отдельные функции разные адреса?
рассмотрим эти две функции: void foo() {} void bar() {} гарантируется ли, что &foo != &bar? аналогично, template<class T> void foo() { } гарантируется ли, что &foo<int> != &foo<double>? есть два компоновщика, которые я знаю о том, что определения функции сгиба вместе. MSVC агрессивно COMDAT складывает функции, поэтому две функции с одинаковой реализацией могут быть превращены в одну функцию. В качестве побочного эффекта обе функции имеют один и тот же ...
c++ перегруженная виртуальная функция предупреждение по clang?
clang выдает предупреждение при компиляции следующего кода: struct Base { virtual void * get(char* e); // virtual void * get(char* e, int index); }; struct Derived: public Base { virtual void * get(char* e, int index); }; предупреждение: warning: 'Derived::get' hides overloaded virtual function [-Woverloaded-virtual] (указанное предупреждение должно быть включено, конечно). Я не понимаю, почему. Обратите внимание, что раскомментирование одного и того же объявления в базе закры ...
Как эффективно получить "строковое представление" для подстроки " std:: string`
используя http://en.cppreference.com/w/cpp/string/basic_string_view в качестве ссылки, я не вижу способа сделать это более элегантно: std::string s = "hello world!"; std::string_view v = s; v = v.substr(6, 5); // "world" хуже того, наивный подход является ловушкой и оставляет v висячая ссылка на временное: std::string s = "hello world!"; std::string_view v(s.substr(6, 5)); // OOPS! Я помню что-то вроде того, что может быть добавлено в стандартную библиотеку для возврата подстроки в виде пр ...
Почему не установить обратно() использовать равномерное инициализации?
следующий код: #include <vector> struct S { int x, y; }; int main() { std::vector<S> v; v.emplace_back(0, 0); } дает следующие ошибки при компиляции с GCC: In file included from c++/4.7.0/i686-pc-linux-gnu/bits/c++allocator.h:34:0, from c++/4.7.0/bits/allocator.h:48, from c++/4.7.0/vector:62, from test.cpp:1: c++/4.7.0/ext/new_allocator.h: In instantiation of 'void __gnu_cxx::new_allocator<_Tp>::construct(_Up* ...
В чем разница между конкретным классом и абстрактным классом?
Я изучаю C++, но я запутался в абстрактном классе и конкретном классе. Некоторые примеры реального мира были бы оценены. ...
Как я могу определить расстояние от объекта в видео?
У меня есть видеофайл, записанный с передней части движущегося автомобиля. Я хочу использовать OpenCV для обнаружения и распознавания объектов, но я застрял на одном аспекте. Как я могу определить расстояние от распознанного объекта. Я могу знать свою текущую скорость и реальное положение GPS, но это все. Я не могу сделать никаких предположений об объекте, который я отслеживаю. Я планирую использовать это для отслеживания и отслеживания объектов, не сталкиваясь с ними. В идеале я хотел бы испо ...
Escape sequence F-form feed-что это такое?
f называется формой подачи. t вкладка, a - это сигнал, n новая строка. Что такое форма подачи -f? Следующая программа #include <iostream> int main() { std::cout << "hellofgoodbye" << std::endl; } печать hello тут женский знак (перевернутом святая ручная граната:) а потом goodbye все на одной линии. ...
Идентификация мертвого кода (C++)
У меня есть большой проект на C++ компилируется в Visual Studio 2008 с. Я знаю, что есть разумное количество "мертвого" кода, который нигде не доступен - методы, которые не вызываются, целые классы, которые не используются. Я ищу инструмент, который будет идентифицировать это статический анализ. такой вопрос: обнаружение мертвого кода в устаревшем проекте C / C++ предлагает использовать средства покрытия кода. Это не вариант в качестве тестового покрытия просто недостаточно высоко. Он так ...
Конкретные инструкции ОС в CMAKE: как это сделать?
Я новичок в CMAKE. Ниже представлен простой файл cmake, который хорошо работает в MinGW environment windows. Проблема явно с target_link_libraries() функция CMAKE, где я связываю libwsock32.а. В Windows это работает, и я получаю результаты. однако, как и ожидалось, в Linux,/usr/bin/ld искать -lwsock32 которого нет в ОС Linux. моя проблема: как я могу проинструктировать CMAKE, чтобы избежать связывания библиотеки wsock32 в ОС Linux??? любой помощь будет очень признательна. мой простой файл ...
Все целочисленные значения идеально представлены в виде двойников? [дубликат]
этот вопрос уже есть ответ здесь: представление целых чисел в двойниках 5 ответов мой вопрос заключается в том, что все целочисленные значения гарантированно имеют идеальное двойное представление. рассмотрим следующий пример кода, который печатает "Same": // Example program #include <iostream> #include <string> int main() { int a = 3; int b = 4; double d_a(a); double d_b(b); do ...
Глобальная область и глобальное пространство имен
Я видел использование этих двух фраз: global scope и global namespace. В чем разница между ними? ...