c++17 相关问题

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

有没有办法指定结构化绑定的哪些部分应该是引用?

我有一个 POD 结构 结构查询{ int l、r、ans; }; 我想写一个基于范围的循环: std::向量 q; for (auto [l, r, &ans]: q) { // 也许我想修改 l 和 r h...

回答 1 投票 0

使用 CMake 作为外部项目构建和链接 OpenAL-Soft

我正在尝试使用 CMake 构建并链接 OpenAL-Soft (https://github.com/kcat/openal-soft/tree/master) 作为 CLion 上的外部项目。 我通过以下方式获取 OpenAL 源文件: 外部项目_添加(OpenAL-lib ...

回答 1 投票 0

选择函数重载的推导指南(或其他解决方案)

我有一个重载的函数。其中 2 个过载是 void foo(std::string_view v); 无效 foo(MyClass m); 其中 MyClass 有一个来自 std::string 的转换构造函数。我如何强制调用 foo(...

回答 1 投票 0

配合find_if使用执行策略的性能效果

我在 std::vector 上使用 std::find_if 。我只对满足谓词的元素的存在感兴趣。向量中有多个满足谓词的元素。我有...

回答 1 投票 0

std::chrono::round 对超出范围的值的行为是否符合预期?

我目前正在将 std::chrono::duration 舍入为 std::chrono::duration,当我给它超出范围的值时,它舍入为 1 秒而不是 4294967295 秒。 看着

回答 1 投票 0

C++17 使用 find_if 的执行策略

我在向量上使用 std::find_if 。我只对满足谓词的元素的存在感兴趣。 Vector中有多个满足谓词的元素。我试过没有和...

回答 1 投票 0

boost::ext:di通过工厂扩展创建带有shared_ptr参数的对象

这段代码运行良好: // g++ --版本 == 13.2.1 // g++ -O0 -g3 -std=gnu++20 -Wall -Wextra -Wpedantic -Werror -Wfatal-errors #包括 #包括...

回答 1 投票 0

在包含使用字符串长度的循环表达式的for循环中,修改循环体中的字符串是否会更新字符串长度?

我正在尝试创建一个函数,该函数将读取两个输入字符串并确定它们是否是彼此的字谜(换句话说,如果字符串具有相同的长度并且c...

回答 1 投票 0

为什么 std::atomic 从 C++17 开始编译,即使删除了复制构造函数?

我有一个简单的代码: #包括 int main() { std::atomic a = 0; } 此代码在使用 -std=c++17 的 GCC 11.1.0 下可以正常编译,但使用 -std=c++14 和 -std=c++11 时会失败。 ...

回答 1 投票 0

使用自定义值编译时 std::index_sequence

我想创建一个 std::index_sequence 来保存给定数字的倍数。 假设我想保存诸如 0, 3, 6, 9, ... 或 0, 2, 4, 6, 8, 10, ... 之类的值。 如何创建这样的自定义序列...

回答 1 投票 0

限制嵌套模板参数类型

我想要一种方法,使模板类的参数限制传递给附加模板类的参数的类型。下面的示例显示了一种失败的尝试。 最大的

回答 1 投票 0

如何将 QVector 转换为另一个不同类型的

我如何编写一个简单的函数(在 C++ 17 中),它可以获取任何类型的 QVector,并返回一个带有任何其他类型的转换值的新 QVector。例如: 自动 my_function(自动输入,自动 f) { ...

回答 3 投票 0

Blue-Burst-Patch-Project 始终无法构建 - Visual Studio 2022 c++14/17

编辑:我试图联系存储库所有者,但他们没有帮助找出它无法构建的原因 我无法在 Visual Studio 2022 中构建 Blue-Burst-Patch-Project 我尝试过构建...

回答 1 投票 0

当类型为 int8_t 且 base=2 时 std::from_chars 中的错误

std::from_chars 在将位字符串 (base=2) 解析为有符号 8 位整数时失败,并出现一般错误,而 std::stoi 解析有符号 8 位整数时不会出现错误。 程序中的两个块...

回答 1 投票 0

带有增量的 2 的补码是否违反了 c++17 中的执行规则顺序,但不违反 c++14 中的执行规则?

这可能是“c++ 101”级别的问题,但有一些相关的痛苦,所以我会要求评论以保持自信。 我有一些遗留代码支持回到 c++11 和之前...

回答 1 投票 0

对将日期字符串从 UTC 转换为本地时间的常用 C++ 解决方案感到困惑

这个答案中有: int main() { std::string strUTCTime = "2017-03-17T13:20:00Z"; std::wstring wstrUTCTime = std::wstring(strUTCTime.begin(),strUTCTime.end()); time_t utctim...

回答 1 投票 0

如果设置了 bool 标志,则使 std::max_element 跳过元素

我有一个项目向量和一个布尔标志: std::vector> 项目; 我正在贪婪地(而且效率低下,我知道这一点,而且这是故意的)寻找所有最好的

回答 1 投票 0

使用 std::transform_reduce 计算复杂表达式

我有以下内容: std::vector 系数; std::vector 函数; std::vector> 多项式; 给定一些输入 std::vector 我有以下内容: std::vector<double> Coefficients; std::vector<double> Functions; std::vector<std::vector<double>> Polynomials; 给定一些输入std::vector<double> X我想评估以下c1 * f1((x1^p1) * (x2^p2) * ...) + c2 * f2(...,其中c是Coefficients中的值,f是Functions中的值,p是Polynomials中的值。 举个例子: Coefficients = {2, -4}; Functions = {sin, cos}; Polynomials = {{4, 3}, {2, 5}}; 必须计算: 2 * sin(x1^4 * x2^3) - 4 * cos(x1^2 * x2^5) 我发现了std::transform_reduce,它看起来很棒,因为我可以在一行中有效地完成整个事情,但由于我必须执行的封装操作的数量,我无法找出正确的方法。有人可以帮我解决吗? 我在想类似的事情: std::transform_reduce( std::execution::par, Coefficients.begin(), Coefficients.end(), Functions.begin(), 0.0, std::plus<>(), [&](double c, auto f) { return c * f(std::transform_reduce( // <-- transform reduce again for the polynomial inside the function and then again for (x^p)? 如果不使用ranges,您必须为多项式向量创建一个迭代器,并手动将其推进到外部transform_reduce: #include <execution> #include <cmath> #include <numeric> #include <vector> int main() { using std::vector; using std::begin, std::end; vector vx = { 42., 69. }; vector vc = { 2., -4. }; vector vf = { &sin, &cos }; vector<vector<double>> vvp = { {4., 3.}, {2., 5.} }; auto vpi = begin(vvp); auto res = std::transform_reduce( std::execution::par, begin(vc), end(vc), begin(vf), 0., std::plus(), [&](double c, auto f) { auto vp = *vpi++; return std::transform_reduce( std::execution::par, begin(vx), end(vx), begin(vp), 0, &pow, std::multiplies() ); } ); }

回答 1 投票 0

如何知道编译器使用的隐式转换?

在一个大项目中,我有这段代码,编译得很好,但我不明白为什么。 std::vector foo; if(foo == 1) // 这是错误,好的代码是“if(foo.size() == 1)”...

回答 1 投票 0

C++17:g++ 版本 8.5 似乎无法正确生成无符号 64 位伪随机整数

我正在使用以下g++版本在Rocky Linux环境中编译C++程序: gcc 版本 8.5.0 20210514(红帽 8.5.0-3)(GCC) 我按如下方式调用 g++: g++ -std=c++17 -Wall -Wpedan...

回答 1 投票 0

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