c++17 相关问题

C ++ 17是2017年批准的C ++标准的名称。它基于以前的C ++ 14标准,改进了核心语言和标准库,并添加了一些新的语言功能。

MFC OnTimer 事件中 CWinThread 的潜在内存泄漏和性能问题

我是一名使用 MFC 的新开发人员,我有一个关于 CWinThread 的问题。我有一个 OnTimer 事件来检查所有轴的位置值是否为 0。此外,我有一个函数

回答 1 投票 0

std::filesystem 如何在每个操作系统上工作?

我最近想在我的应用程序中使用标头,但我不确定它是否适用于任何操作系统。 (任何) 因为文件系统依赖于平台操作系统。我了解 C++ 的宗旨之一...

回答 2 投票 0

在 grep 克隆中使用 std::future 与 std::thread

我最近写了一个 grep 克隆。它对指定目录的所有文件进行字符串查询的递归搜索。程序的核心是如下所示的函数。 /** 递归搜索 q...

回答 1 投票 0

当函数通过不同路径返回局部变量和临时变量时复制省略

我有一堂课Foo 类 Foo { 民众: Foo(std::string s) : s_(std::move(s)) { std::cout << "Constructor " << s_ << "\n"; } Foo(const F...

回答 1 投票 0

为什么 std::iterator 被弃用?

模板类 std::iterator 在 C++17 中被设置为弃用。 为什么会这样呢? 这是确保 std::iterator_traits 工作的便捷方法,特别是如果您可以使用默认模板参数......

回答 2 投票 0

如何使用 std::filesystem 来查看我是否具有写访问权限?

我想使用 std::filesystem 来查询提供给我的函数的磁盘文件夹路径。 我想知道我是否有该文件夹的写入权限。 但我想在不实际尝试的情况下做到这一点...

回答 1 投票 0

如何等待另一个线程再次循环?

在我的 C++17 应用程序中,我有一个运行无限循环的线程,在每次迭代中执行一些工作(每次需要几秒钟)。 现在我想在另一个线程中等待(或在多个其他线程中等待......

回答 1 投票 0

即使使用好友类也无法访问私有类

我正在使用comp4300学习C++和游戏设计。在课程的作业 2 中,讲师使用友元类来访问实体类,但我无法做到这一点,并且出现错误: ...

回答 1 投票 0

使用棘手的签名从 std::unary _function 迁移出来

我需要迁移一个古老的代码库以支持 c++17。这意味着删除 auto_ptr、unary_function 等。我已经成功删除了 unary_function 的几个实例,但这一个是一个谜……

回答 1 投票 0

Visual C++ 中的参数相关查找

我的程序在 Visual Studio 的 C++20 模式下的行为符合我的预期,但我需要使其在 C++17 模式下运行,在该模式下程序会更改其输出。 最小化后,如下所示: 模板<

回答 1 投票 0

即使我通过移动语义传递给lambda捕获,但它仍然尝试使用复制构造函数构造| C++

std::promise承诺{}; std::function newTask = [promise = std::move(promise), task = std::move(task)]() 可变 { } 即使我通过 std::move(promi...

回答 1 投票 0

使用 WSL Ubuntu 运行 C++ 代码,但无法在 VS Code 中调试代码

我正在尝试使用 WSL Ubuntu 设置 VS 代码来运行 C++ 代码。我已经安装了 gdb 和 g++,并且能够使用 Ubuntu 和 VS code 终端运行代码。然而,当我尝试调试代码时......

回答 1 投票 0

如何获取对一系列 std::vector 元素的 const 引用?

我想从 std::vector 获取一系列元素并将它们存储为 const-ref,因为我只想读取但不想修改它们。 #包括 #包括 ...

回答 3 投票 0

对一系列 std::vector 元素的常量引用

我想从 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 示例

回答 3 投票 0

c++ 获取对一系列 std::vector 元素的 const 引用

#包括 #包括 // 一个“大”用户类 类我的类{ 民众: 整数数据; MyClass(int val) : 数据(val) {} }; int main() { // 初始化 ve...

回答 1 投票 0

将大括号括起来的初始值设定项列表和向量的组合传递给可变参数模板

我想编写一个表类,它以多列作为参数来创建表。这是我的尝试。 模板 班级表 { 私人的: 使用类型=...

回答 1 投票 0

使用 SFINAE 对 std::variant 进行 Constexpr 检查

是否可以定义一个函数,通过 std::variant 的专门化来检查其模板化参数,而不实际包含 ?当然是为了

回答 1 投票 0

C++17 复制省略规则并隐式移动

有下面一段代码 #包括 A类{ 民众: A() {} // 显式移动构造函数 A(A&&) 没有例外 { std::cout << "move c...

回答 1 投票 0

模板参数类型推导误区

我有一个带有通用(转发)参数的模板函数,如下所示: #包括 #包括 模板 无效 foo(T&& arg) { ...

回答 2 投票 0

通过“using”关键字为 std::chrono 创建别名会引发编译器错误

我正在尝试使用 std::chrono 和 std::chrono::duration_cast 的别名,这会引发编译错误。我包含了 头文件。下面是代码: #

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.