小编Dre*_*ann的帖子

有没有理由在C++ 1z中使用std :: map :: emplace()而不是try_emplace()?

在C++ 17,std::mapstd::unordered_map有一个新的成员函数模板:try_emplace().在n4279中提出的这一新增功能表现相似emplace(),但具有以下优点:

  • try_emplace()如果插入没有发生,则不会从rvalue参数移动.这在操作其值为仅移动类型的地图时非常有用,例如std::unique_ptr.
  • try_emplace()分别处理密钥和参数mapped_type,这使得它比以value_type(即std::pair)表示的通用变更器更直观.

鉴于上述优点,在编写仅使用C++ 1z的代码时,您是否会使用emplace()C++ 11而不是try_emplace()C++ 1z?

c++ c++17

31
推荐指数
3
解决办法
5333
查看次数

time_t的字符串表示?

time_t seconds;
time(&seconds);

cout << seconds << endl;
Run Code Online (Sandbox Code Playgroud)

这给了我一个时间戳.如何将该纪元日期变为字符串?

std::string s = seconds;
Run Code Online (Sandbox Code Playgroud)

不起作用

c++ timestamp

29
推荐指数
3
解决办法
8万
查看次数

为什么不能调用带有 auto&amp; 参数的 const 可变 lambda?

#include <type_traits>

int main()
{
    auto f1 = [](auto&) mutable {};
    static_assert(std::is_invocable_v<decltype(f1), int&>); // ok

    auto const f2 = [](auto&) {};
    static_assert(std::is_invocable_v<decltype(f2), int&>); // ok

    auto const f3 = [](auto&) mutable {};
    static_assert(std::is_invocable_v<decltype(f3), int&>); // failed
}
Run Code Online (Sandbox Code Playgroud)

查看演示

为什么 const mutable lambda 不能采用引用参数?

c++ lambda static-assert type-traits c++20

29
推荐指数
2
解决办法
1472
查看次数

在python中'empty if statement'怎么样?

它在C中很常见:黑客'如果声明'这样说:

if(mostlyhappencondition)
    ;#empty statement
else{
    dosomething;
}
Run Code Online (Sandbox Code Playgroud)

它在Python中工作?我的意思是,我们可以通过使用它来改善应用程序的性能吗?我也想知道为什么.

python if-statement

28
推荐指数
2
解决办法
4万
查看次数

std :: optional-用{}或std :: nullopt构造为空?

我认为初始化std::optionalwith与std::nullopt默认构造相同。

它们在cppreference中的描述与形式(1)相同。

但是,Clang和GCC似乎都不同地对待这些玩具示例函数。

#include <optional>

struct Data {
    char large_data[0x10000];
};

std::optional<Data> nullopt_init() {
  return std::nullopt;
}

std::optional<Data> default_init() {
  return {};
}
Run Code Online (Sandbox Code Playgroud)

编译器资源管理器似乎暗示使用std::nullopt会简单地设置“ contains”标志,

nullopt_init():
    mov     BYTE PTR [rdi+65536], 0
    mov     rax, rdi
    ret
Run Code Online (Sandbox Code Playgroud)

虽然默认构造将值初始化整个类。这在功能上是等效的,但几乎总是比较昂贵。

default_init():
    sub     rsp, 8
    mov     edx, 65537
    xor     esi, esi
    call    memset
    add     rsp, 8
    ret
Run Code Online (Sandbox Code Playgroud)

这是故意行为吗?什么时候应该优先使用另一种形式?

c++ optional c++17

28
推荐指数
2
解决办法
825
查看次数

如何处理clang中的全局构造函数警告?

Clang警告(当使用-Weverything或时Wglobal-constructors)关于静态对象的构造函数.

warning: declaration requires a global constructor
      [-Wglobal-constructors]
A A::my_A; // triggers said warning
     ^~~~
Run Code Online (Sandbox Code Playgroud)

为什么这是相关的,应该如何处理这个警告?

简单示例代码:

class A {
  // ...
  static A my_A;
  A();
};

A A::my_A; // triggers said warning
Run Code Online (Sandbox Code Playgroud)

c++ clang

24
推荐指数
2
解决办法
1万
查看次数

我如何使用EPOLLHUP

你们能为我提供一个很好的示例代码,使用EPOLLHUP进行死对等处理吗?我知道这是一个检测用户断开连接但不确定如何在代码中使用它的信号.谢谢提前..

linux networking epoll

20
推荐指数
1
解决办法
2万
查看次数

open-std.org是C++ 11标准文档的官方网站吗?

这听起来可能是一个愚蠢的问题但是:以下链接是官方最终确定的c ++ 11标准吗?(或至少是最新版本) n3337

这是我第一次访问open-std.org,我不确定这是否是持有C++标准的官方网站.

只需仔细检查一下.(我最后一次引用一个不熟悉的网站(cplusplus.com)并不是一个愉快的体验.)

c++ c++11

18
推荐指数
2
解决办法
2608
查看次数

用于描述时间范围的最佳GUI控件

我需要让最终用户指定一个时间范围,作为开始日期/时间和结束日期/时间在内部存储和使用.范围可能是几分钟,也可能是几天.

有没有人发现一个可以优雅地处理这个问题的交互式控件?

大多数GUI工具包都有日历控件,因此我可以指定"开始",其中包含当天的日历和时间的文本字段......以及"结束"的相同内容.

我还可以使用单个文本字段或滑块替换"结束"控件,该文本字段或滑块简单地描述了"结束"开始后的秒数/分钟/小时数.

我不喜欢这些想法是需要多少点击,打字和更多点击来描述这样一个简单的概念.如果输入的时间不能被识别为时间,我也必须拍打用户的手.

我有一个更清洁的实现吗?

user-interface

17
推荐指数
1
解决办法
2万
查看次数

GTK检测窗口从用户调整大小

在GTK(或pygtk或gtkmm ...)

如何检测用户手动调整应用程序窗口的大小,通常通过拖动窗口的边缘来完成?

我需要找到一种方法来区分手动调整大小和源自gtk的调整大小,例如窗口内容的更改.

gtk signals resize

17
推荐指数
3
解决办法
1万
查看次数