std 相关问题

C ++标准库及其命名空间。与[c ++]结合使用。

如何在不引用 std::move 或 std::swap 的情况下实现移动功能

如何在不引用 std::move 或 std::swap 的情况下实现移动功能。 stl可接受的标准函数原型是什么以及如何使用它? 请举个例子。 我尝试过

回答 1 投票 0

如何对 std::map 中的所有值求和?

如何在不使用for循环的情况下对std::map集合中的所有值求和?该映射作为私有成员驻留在类中。累加是在公共函数调用中执行的。 我会...

回答 2 投票 0

使用抽象自定义格式化程序

我正在尝试以下操作(链接): #包括 #include // 对于 std::format #include // 对于 fmt::format #包括 #包括 我正在尝试以下操作(链接): #include <string> #include <format> // For std::format #include <fmt/format.h> // For fmt::format #include <ranges> #include <functional> struct Point { int x; int y; }; #ifdef USE_FMT template<typename T> struct Formatter : public fmt::formatter<T> {}; using context = fmt::format_context; #else template<typename T> struct Formatter : public std::formatter<T> {}; using context = std::format_context; #endif template <> struct Formatter<Point>: Formatter<std::string> { auto format(Point x, context& ctx) const { return Formatter<std::string>::format(std::to_string(x.x) + "us", ctx); } }; int main() { Point xx {2,3}; std::cout << std::format("{}", xx); // assuming using std return 0; } 但是编译失败。如上面的代码所示,我想让开发人员使用 struct Formatter 自定义格式,然后后端可以选择要采用的后端解决方案。 失败的任何原因以及可能的解决方案? 编译器错误: 包含在文件中 /opt/compiler-explorer/gcc-trunk-20240207/include/c++/14.0.1/ostream:43, 来自/opt/compiler-explorer/gcc-trunk-20240207/include/c++/14.0.1/iostream:41, 来自:1:/opt/compiler-explorer/gcc-trunk-20240207/include/c++/14.0.1/format: 在“class std::__format::_Checking_scanner”的实例化中: /opt/compiler-explorer/gcc-trunk-20240207/include/c++/14.0.1/format:4174:4: 需要 'consteval std::basic_format_string<_CharT, _Args>::basic_format_string(const _Tp&) [with _Tp = char [3]; _CharT = 字符;第 4174 章__scanner(_M_str); | ^~~~~~~~~ :38:29:需要从这里 38 | std::cout << std::format("{}", xx); // assuming using std | ~~~~~~~~~~~^~~~~~~~~~ /opt/compiler-explorer/gcc-trunk-20240207/include/c++/14.0.1/format:4030:10: error: static assertion failed: std::formatter must be specialized for each type being formatted 4030 | (is_default_constructible_v> && ...), 非专用格式化程序的默认设置将引发此类错误,表明您实际上尚未为该类型专门化格式化程序。这记录在 std::formatter: 对于未启用专门化 std::formatter<T, CharT> 的所有类型 T 和 CharT,该专门化是完整类型并且被禁用。 禁用的专业化不满足Formatter要求,以下均为false: std::is_default_constructible_v std::is_copy_constructible_v std::is_move_constructible_v std::is_copy_assignable_v std::is_move_assignable_v 这里的问题是,您没有专门化 std::formatter,而是定义派生自 std::formatter 的 own 类模板并专门化 that。当您调用 std::format 时,它无法找到您的 Formatter 专业化。 这同样适用于fmt::format。 此外,尽管有基于宏std::format选择格式库的逻辑,但您的程序在这里始终使用USE_FMT。如果您定义该宏,您将遇到进一步的问题,因为 std::format 不会寻找 fmt::formatter 专业化。 您需要直接专业化std::formatter(或fmt::formatter)。以下是如何干净利落地做到这一点: #include <iostream> #include <string> #ifdef USE_FMT # include <fmt/format.h> // For fmt::format # define FMT_NAMESPACE fmt #else # include <format> // For std::format # define FMT_NAMESPACE std #endif using FMT_NAMESPACE::format; struct Point { int x; int y; }; template <> struct FMT_NAMESPACE::formatter<Point> : formatter<std::string> { auto format(Point x, format_context& ctx) const { return formatter<std::string>::format(std::to_string(x.x) + "us", ctx); } }; int main() { Point xx {2,3}; std::cout << format("{}", xx); }

回答 1 投票 0

std::vector、std::map、std::string 等作为结构成员?

我很习惯 C#,其中结构最好只包含非托管类型的成员,以便结构的 sizeof() 是预先确定的,并且可以完全视为值类型。 当一个

回答 1 投票 0

C++ - std::vector、std::map、std::string 等作为结构成员?

我很习惯 C#,其中结构最好只包含非托管类型的成员,以便结构的 sizeof() 是预先确定的,并且可以完全视为值类型。 当一个

回答 1 投票 0

是否有std算法或其组合来查找排序数组中重复值的最长序列?

功能规格 在排序数组(或向量)中找到最长的重复值序列。数组的大小预计相对较大(最多一百万个条目)。 请参阅

回答 1 投票 0

为什么引用计数不是2? [重复]

#包括 #包括 班级类型 { 民众: 类型() { std::cout << __FUNCTION__ << std::endl; } ~type() { std::cout <<

回答 1 投票 0

是否有标准算法或它们的组合来有条件地替换相邻的重复值?

功能规格 如果向量中相邻重复的值超过重复次数并且该值未被某些谓词排除,则用新的

回答 1 投票 0

`int(int) const` 是 C++23 中的有效函数类型吗?

以下摘自cppref: 模板 类 move_only_function; // 没有定义的 模板 类 move_only_function; 我也...

回答 1 投票 0

c++11 constexpr 将 std::array 列表展平为数组

我从 c++11 开始,constexpr 和模板元编程似乎是在微型微控制器上节省稀缺内存的好方法。 有没有办法编写一个模板来展平 constexpr arr 列表...

回答 5 投票 0

有没有办法有条件地将函子作为谓词传递给标准库算法?

我调用了带有许多参数的 std::mismatch ,并且根据某些条件,我需要运行标准版本或带有我的谓词的版本。 有没有办法避免 std::mismatch 调用重复...

回答 1 投票 0

为什么 std::source_location 不提供长度以避免 C++20 中的性能损失?

考虑以下代码: 无效日志(std::string_view 消息, std::source_location const& loc = std::source_location::current()) { // 性能损失! 自动常量 n = std::

回答 1 投票 0

如何将元素插入向量的开头?

我需要将值插入到 std::vector 的开头,并且我需要将该向量中的其他值推到更远的位置,例如:添加到向量和值的开头的内容...

回答 5 投票 0

C++ - 从 std::vector 返回元素的指针稳定性<T*>?

std::vector 在内存中是什么样子? 所以我刚才正在阅读上面的内容,我注意到以下引用: 仅当没有

回答 1 投票 0

为什么 std::errno 不存在,而“errno”却存在?

为了让我的代码更符合C++风格而不是C风格,我想用std::errno替换errno,用include 替换include 。 令我惊讶的是,

回答 1 投票 0

Template 模板 C++ 函数

如何编写对任意类型的任意容器进行操作的模板函数?例如,我如何概括这个虚拟函数 模板 无效打印大小...

回答 6 投票 0

是否可以在我们只调用了.reserve的空std::向量上使用std::generate?

我的主要功能: #包括 //#包括 #包括 int main() { std::向量 v; int 长度 = 2 * 5 + 1; v.reserve(len); // ...

回答 1 投票 0

是否可以在不依赖编译器内置函数的情况下实现 is_trivially_constructible 的库实现?

我使用的是 gcc-4.9,它没有 is_trivially_constructible 类型特征。查看 libstdc++ 源代码(type_traits),这取决于实现的 __is_trivially_constructible...

回答 1 投票 0

C++ STL 的 __is_const(_Tp) 是如何工作的?

在研究一些类型特征时,我正在搜索 std::is_const() 是如何工作的。根据STL中的定义是 模板 结构

回答 1 投票 0

如何使用 RandomAccessIterator 检查 std::vector 是否为空?

我编写了一个函数,它采用向量上的一对 RandomAccessIterator 来对其进行排序。这很好用。我编写了一个表现出奇怪行为的测试用例。 我的

回答 1 投票 0

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