c++11 相关问题

将此标记用于必须编译为C ++ 11的代码(不使用C ++ 14或更高版本中引入的任何功能)。

为什么一个完美的转发功能一定要模板化?

为什么下面的代码有效: 模板 void foo(T1 &&arg) { bar(std::forward(arg)); } std::string str = "你好世界"; foo(str); // 即使如此也有效...

回答 1 投票 0

c++ rand() 微不足道的变化

我在尝试生成随机数时遇到了一个问题,它输出每秒递增 3 的升序数字序列。我正在使用 mingw g++ 6.3.0 和以下编译器

回答 1 投票 0

为什么在使用 clang 进行静态声明时,alignas 无法编译?

我在 clang 上遇到编译错误,并且使用以下代码的 gcc 出现警告: 静态alignas(16) int one_s = 1; // clang: 错误: 属性列表不能出现在这里;海湾合作委员会:警告:

回答 1 投票 0

如何将整数转换为 std::u16string (C++11)?

没有方法 std::to_u16string(...)。显然 static_cast 似乎不是进行此类转换的最合适方法。 对于相反的转换,从字符串到整数,转换器可能是...

回答 2 投票 0

为什么派生类可以移动构造,而基类则不能?

考虑以下示例: #包括 #包括 #包括 模板 struct Foo : public Base { 使用基::基; }; 结构...

回答 2 投票 0

C++:如何将自己类型的数组作为函数参数传递?

我是 C++ 新手,所以我想知道如何将数组作为参数传递给我自己创建的类型的函数。到目前为止,我一直使用 C#、C 和 Java。 在 C# 中我可以这样做: // 我的自定义

回答 1 投票 0

std::remove_all_extents 源代码过多:为什么需要 3 个声明,而 2 个就足够了

当我查看来源时 模板 结构 _LIBCPP_TEMPLATE_VIS 删除_all_extents {typedef _Tp 类型;}; 模板 结构 _LIBCPP_TEMPLATE_VIS 删除_all_ex...

回答 1 投票 0

std::enable_shared_from_this::shared_from_this 的工作原理

我只是无法理解 std::enable_shared_from_this::shared_from_this 如何返回与现有指针共享所有权的共享指针。换句话说,你这样做: std::shared_ptr 我只是无法理解 std::enable_shared_from_this::shared_from_this 如何返回与现有指针共享所有权的共享指针。换句话说,你这样做这个: std::shared_ptr<Foo> getFoo() { return shared_from_this(); } 因此,当您调用 getFoo 时,它到底如何获得另一个 shared_ptr 来共享所有权,而不是创建一个拥有相同 shared_ptr 的单独 this。 我需要理解这一点才能理解如何从某个对象创建shared_ptr,这些对象都会增加相同的引用计数而不是初始化单独的shared_ptr。 enable_shared_from_this<T> 有一个 weak_ptr<T> 数据成员。 shared_ptr<T>构造函数可以检测T是否派生自enable_shared_from_this<T>。如果是,则 shared_ptr<T> 构造函数会将 *this(即 shared_ptr<T>)分配给 weak_ptr 中的 enable_shared_from_this<T> 数据成员。然后 shared_from_this() 可以从 shared_ptr<T> 创建 weak_ptr<T>。 可能的实施示例: template<class D> class enable_shared_from_this { protected: constexpr enable_shared_from_this() { } enable_shared_from_this(enable_shared_from_this const&) { } enable_shared_from_this& operator=(enable_shared_from_this const&) { return *this; } public: shared_ptr<T> shared_from_this() { return self_.lock(); } shared_ptr<T const> shared_from_this() const { return self_.lock(); } private: weak_ptr<D> self_; friend shared_ptr<D>; }; template<typename T> shared_ptr<T>::shared_ptr(T* ptr) { // ... // Code that creates control block goes here. // ... // NOTE: This if check is pseudo-code. Won't compile. There's a few // issues not being taken in to account that would make this example // rather noisy. if (is_base_of<enable_shared_from_this<T>, T>::value) { enable_shared_from_this<T>& base = *ptr; base.self_ = *this; } }

回答 1 投票 0

为什么 C++ using-declaration 不能将基类的受保护成员公开为派生类的公共成员?

根据 cppref: using 声明将基类的成员引入到派生类中 类定义,例如将基类的受保护成员公开为 派生的公共成员。 然而,以下...

回答 1 投票 0

std::move 对堆栈变量有意义吗

我需要创建一个大小为 1024 的结构列表。因此,我尝试通过使用移动语义来优化对列表的推送操作。但移动语义仅对堆分配的内存有意义......

回答 3 投票 0

变量上的 consteval 与 constexpr

constexpr 和 consteval 之间有什么区别吗? consteval int x1 = 2; constexpr int x2 = 5; 使用 constexpr 比 consteval 更好吗?

回答 1 投票 0

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

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

回答 5 投票 0

leetcode 回文数 c++

类解决方案{ 民众: bool isPalindrome(int x) { std::string s = std::to_string(x); 布尔返回= false; 对于 (int i=0;i class Solution { public: bool isPalindrome(int x) { std::string s = std::to_string(x); bool returnthis = false; for (int i=0;i<s.size();i++){ for (int j=s.size()-1;j>=0;j=j-1){ if (s[i]==s[j]){ bool returnthis = true; } } } return returnthis; } }; 我正在尝试使用字符串解决回文问题,但在我的代码中,returnthis 布尔值永远不会变为 true。为什么会这样呢? (我知道可能有更好的解决方案,但我是初学者,我能想到的就是这个解决方案) 您试图将字符串的每个字符与末尾的每个其他字符进行比较,这不是检查回文的正确方法。回文字符串是向后读与向前读相同的字符串。因此,您只需检查第一个字符是否等于最后一个字符,第二个字符是否等于倒数第二个字符,依此类推,直到字符串的中间。 此外,您在 if 语句中声明了一个局部变量 returnthis,它隐藏了函数开头定义的 returnthis 变量。这个内部 returnthis 与您在函数末尾返回的变量不同。外部 returnthis 的值永远不会改变并保持 false。 而是尝试使用两个指针,例如 i 和 j 以及 while 循环,来比较字符串开头和结尾的字符,向中心移动。 class Solution { public: bool isPalindrome(int x) { std::string s = std::to_string(x); int i = 0; int j = s.size() - 1; while (i < j) { if (s[i] != s[j]) { return false; // If characters at i and j are not equal, it's not a palindrome. } i++; j--; } return true; // If we checked all character pairs successfully, it's a palindrome. } };

回答 1 投票 0

是否需要通过引用传递智能指针对象?

假设我有一个类,其中包含一个智能指针作为其成员变量: B 级; A类{ 民众: A(const std::shared_ptr& b) : b_(b) {} // 选项1:通过引用传递 ...

回答 2 投票 0

将未知大小的 std::array 传递给函数

在 C++11 中,我将如何编写一个采用已知类型但未知大小的 std::array 的函数(或方法)? // 编造的例子 void mulArray(std::array& arr, const int

回答 6 投票 0

为什么类型别名在C++中不允许作为友元类名?

A类{ }; B类{ 使用 C = A; // 编译错误: // 类型别名“C”不能用类说明符引用 朋友C级; }; 为什么类型别名不允许...

回答 1 投票 0

如何在 C++11 constexpr 中检查双精度位模式是否为 0x0?

我想检查给定的双精度/浮点变量是否具有实际的位模式 0x0。不要问为什么,它用在 Qt 中的一个函数(qIsNull())中,我想将其设置为 constexpr。 原始代码使用了...

回答 4 投票 0

添加 std::vector 声明会产生奇怪的行为吗?

我在以下程序中遇到了奇怪且不一致的行为: 注意:下面的程序可能具有未定义的行为,并且可能会产生破坏性影响。自己运行

回答 1 投票 0

为什么C/C++没有原子标志test_and_clear?

atomic_flag_test_and_set 是的! atomic_flag_clear 是的! atomic_flag_test_and_clear 不 原子标志设置不 如果您想做一些事情,例如在某些上下文中和其他上下文中为事件设置标志

回答 1 投票 0

选择可变参数模板最后一个参数的有效方法

我知道如何选择可变参数模板的第一个参数: template< class...Args> struct select_first; template< class A, class ...Args> struct select_first{ 使用 t...

回答 8 投票 0

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