C ++ 17是2017年批准的C ++标准的名称。它基于以前的C ++ 14标准,改进了核心语言和标准库,并添加了一些新的语言功能。
MFC OnTimer 事件中 CWinThread 的潜在内存泄漏和性能问题
我是一名使用 MFC 的新开发人员,我有一个关于 CWinThread 的问题。我有一个 OnTimer 事件来检查所有轴的位置值是否为 0。此外,我有一个函数
我最近想在我的应用程序中使用标头,但我不确定它是否适用于任何操作系统。 (任何) 因为文件系统依赖于平台操作系统。我了解 C++ 的宗旨之一...
在 grep 克隆中使用 std::future 与 std::thread
我最近写了一个 grep 克隆。它对指定目录的所有文件进行字符串查询的递归搜索。程序的核心是如下所示的函数。 /** 递归搜索 q...
我有一堂课Foo 类 Foo { 民众: Foo(std::string s) : s_(std::move(s)) { std::cout << "Constructor " << s_ << "\n"; } Foo(const F...
模板类 std::iterator 在 C++17 中被设置为弃用。 为什么会这样呢? 这是确保 std::iterator_traits 工作的便捷方法,特别是如果您可以使用默认模板参数......
如何使用 std::filesystem 来查看我是否具有写访问权限?
我想使用 std::filesystem 来查询提供给我的函数的磁盘文件夹路径。 我想知道我是否有该文件夹的写入权限。 但我想在不实际尝试的情况下做到这一点...
在我的 C++17 应用程序中,我有一个运行无限循环的线程,在每次迭代中执行一些工作(每次需要几秒钟)。 现在我想在另一个线程中等待(或在多个其他线程中等待......
我正在使用comp4300学习C++和游戏设计。在课程的作业 2 中,讲师使用友元类来访问实体类,但我无法做到这一点,并且出现错误: ...
使用棘手的签名从 std::unary _function 迁移出来
我需要迁移一个古老的代码库以支持 c++17。这意味着删除 auto_ptr、unary_function 等。我已经成功删除了 unary_function 的几个实例,但这一个是一个谜……
我的程序在 Visual Studio 的 C++20 模式下的行为符合我的预期,但我需要使其在 C++17 模式下运行,在该模式下程序会更改其输出。 最小化后,如下所示: 模板<
即使我通过移动语义传递给lambda捕获,但它仍然尝试使用复制构造函数构造| C++
std::promise承诺{}; std::function newTask = [promise = std::move(promise), task = std::move(task)]() 可变 { } 即使我通过 std::move(promi...
使用 WSL Ubuntu 运行 C++ 代码,但无法在 VS Code 中调试代码
我正在尝试使用 WSL Ubuntu 设置 VS 代码来运行 C++ 代码。我已经安装了 gdb 和 g++,并且能够使用 Ubuntu 和 VS code 终端运行代码。然而,当我尝试调试代码时......
如何获取对一系列 std::vector 元素的 const 引用?
我想从 std::vector 获取一系列元素并将它们存储为 const-ref,因为我只想读取但不想修改它们。 #包括 #包括 ...
我想从 std::vector 获取一系列元素并将它们存储为 const 引用,因为我只想读取但不想修改它们。 #包括 #包括 我想从std::vector<MyClass>获取一系列元素并将它们存储为常量引用,因为我只想读取但不想修改它们。 #include <iostream> #include <vector> // a "large" user class class MyClass { public: int data; MyClass(int val) : data(val) {} }; int main() { // Initialize vector to MyClass objects std::vector<MyClass> myClass{1, 2, 3, 4, 5, 6, 7, 8}; // Get const reference to element with index 0 const auto &el = myClass[0]; // Get const references to a range of elements const unsigned int start = 1, end = 4; // const auto &elRange = ??? return 0; } 我怎样才能实现这样的目标? 我想从 std::vector 获取一系列元素并将它们存储为 const 引用,因为我只想读取但不想修改它们。 最好是使用 std::span,这需要 c++20 支持。 否则,您可以编写一个简单的 SimpleSpan 类来执行此操作。最简单的就像: // A simple span-like class for C++17 template<typename T> class SimpleSpan { T* data_; std::size_t size_; public: constexpr SimpleSpan(T* data, std::size_t size) : data_{ data }, size_{ size } {} constexpr T& operator[](std::size_t index) { return data_[index]; } constexpr T& operator[](std::size_t index) const { return data_[index]; } constexpr T* begin() { return data_; } constexpr T* end() { return data_ + size_; } constexpr T* begin() const { return data_; } constexpr T* end() const { return data_ + size_; } constexpr std::size_t size() const { return size_; } }; 而且只是 // Get const references to a range of elements using our SimpleSpan const unsigned int start = 1, end = 4; SimpleSpan<const MyClass> elRange(&myClass[start], end - start); 观看现场演示 std::跨度 const auto elRange = std::span(&myClass[1], &myClass[4]); 这就是 std::span 的用途,但您需要 C++20。 如果你被困在较小的 C++ 版本上,你可以使用 boost::span。 (它需要 2 个标头才能包含在项目中,您不需要整个 boost 库) auto elements = boost::span<const MyClass>{myClass}.subspan(start, end-start); C++17 godbolt 示例
c++ 获取对一系列 std::vector 元素的 const 引用
#包括 #包括 // 一个“大”用户类 类我的类{ 民众: 整数数据; MyClass(int val) : 数据(val) {} }; int main() { // 初始化 ve...
将大括号括起来的初始值设定项列表和向量的组合传递给可变参数模板
我想编写一个表类,它以多列作为参数来创建表。这是我的尝试。 模板 班级表 { 私人的: 使用类型=...
使用 SFINAE 对 std::variant 进行 Constexpr 检查
是否可以定义一个函数,通过 std::variant 的专门化来检查其模板化参数,而不实际包含 ?当然是为了
有下面一段代码 #包括 A类{ 民众: A() {} // 显式移动构造函数 A(A&&) 没有例外 { std::cout << "move c...
通过“using”关键字为 std::chrono 创建别名会引发编译器错误
我正在尝试使用 std::chrono 和 std::chrono::duration_cast 的别名,这会引发编译错误。我包含了 头文件。下面是代码: #