RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-336315

megorit's questions

Martin Hope
megorit
Asked: 2022-08-12 15:34:11 +0000 UTC

使用 Ts::operator()... 时,lambda 将存储在哪里?

  • 0

在这里,文档描述了使用传递给其构造函数的 lambda 创建函子的机制。lambdas 将存储在哪里?它是通过自动编码在课堂上的某个地方吗?那你可以访问它们吗?我的意思不是电话,而是指针或链接。lambda 有一个未命名的 autogentype,事实证明 T::operator() 不能通过限定名称访问......

template<typename... Ts>
struct Overloader : Ts...
{
    using Ts::operator()...; // exposes operator() from every base
};
 
template<typename... T>
Overloader(T...) -> Overloader<T...>; // C++17 deduction guide, not needed in C++20
 
int main()
{
    auto o = Overloader{ [] (auto const& a) {std::cout << a;},
                         [] (float f) {std::cout << std::setprecision(3) << f;} };
}
c++
  • 1 个回答
  • 18 Views
Martin Hope
megorit
Asked: 2022-06-11 23:15:46 +0000 UTC

如何向正则表达式添加异常?

  • 0

事实上,你需要一个 type 的正则表达式="([^"]*)",但除了你可以 escape ",按类型="text\"text"并 text\"text从组中获取之外。

регулярные-выражения
  • 1 个回答
  • 10 Views
Martin Hope
megorit
Asked: 2022-04-11 16:25:41 +0000 UTC

std::string 和 std::vector<std::uint8_t> 的兼容性

  • 1

字节和字符之间的转换存在一个小问题。我想避免潜在的 UB,但我不确定它们是否会发生。

数据被读入std::vector<std::uint8_t>,然后,就我而言,必须分成两部分:其中一个始终是文本,第二个是文本或二进制。

我使用了一个特定的分隔符,例如,像这样:

std::string delimiter{"delimiter"};

auto delim_iter = std::search(
    byte_vector.begin(), byte_vector.end(),
    delimiter.begin(),   delimiter.end()
);

delim_iter += delimiter.size();

std::string char_part{byte_vector.begin(),delim_iter};

如您所知,char根据实现,它可以是signed, 或unsigned. 因此,我不清楚如何正确地做到这一点以避免出现问题。

例如,在使用时,std::transform建议传递一个 lambda,它需要unsigned char:

std::transform(
    string.begin(), string.end(), string.begin(),
    [](unsigned char ch) { return std::tolower(ch); }
);

这里有任何潜在的问题吗?能以某种方式解决吗?谢谢你。

c++
  • 2 个回答
  • 10 Views
Martin Hope
megorit
Asked: 2022-04-04 18:01:36 +0000 UTC

如果要重复使用,是否需要在容器移动后调用 clear ?

  • 2

这是一个例子:

for (std::string key, value; true;)
{
    if (!std::getline(stream,key,':')) break;
    if (!std::getline(stream,value))   break;

    /* implementation */

    map.emplace(std::move(key),std::move(value));

    key.clear();   // ?
    value.clear(); // ?
}

有意见认为,该标准不保证容器移动后内部状态的有效性。在网上找不到任何答案。我想澄清这个问题。谢谢你。

c++
  • 3 个回答
  • 10 Views
Martin Hope
megorit
Asked: 2022-03-18 00:57:33 +0000 UTC

如何摆脱标题中的依赖关系?

  • 3

例如,我正在编写一个依赖于某些库的类,即 他们的类型。在课堂上,我有这些数据的私有字段。原则上我不希望用户知道我使用了什么。不是为了将其隐藏为秘密,而是为了不阻塞其静态分析,并将其从命名空间冲突中保存(很少,但它会发生)。是否有可能做到这一点?

c++
  • 1 个回答
  • 10 Views
Martin Hope
megorit
Asked: 2022-03-04 04:14:35 +0000 UTC

如何使高负载 Qt-[视频] 小部件工作?

  • 0

我想过如何实现一个 Qt 播放器。帧解码发生在 Qt 之外。在 Qt 方面,只需要通过paintEvent()+输出帧QImage。我找到了一种机制,允许您将任何 Qt 对象刷新到创建的QThread-QObject::moveToThread()中,但有一个限制:

如果对象有父对象,则不能移动它。

无论如何,小部件都会有一个父级,否则它是无用的。想象一下,您需要以 60 FPS 的速度输出 4K 帧。我怀疑 Qt 的主线程能否很好地处理这个问题。

告诉我,有没有办法解决这个问题?或者也许我错了,一切都应该没问题?

c++
  • 1 个回答
  • 10 Views
Martin Hope
megorit
Asked: 2022-01-26 04:27:40 +0000 UTC

二进制表示中双字节字符类型的兼容性

  • 2

所谓的C++中有一个接口。1C (Native API) 的外部组件L"string",它使用形式为. 由于类型的大小wchar_t取决于平台(Linux - 4 字节,Windows - 2 字节),因此此处也使用了转换函数,以及宏:

#ifdef _WINDOWS
#define WCHAR_T     wchar_t
#else
#define WCHAR_T     uint16_t
#endif

用于与 1C 交互的函数具有标准接口。它们都必须发送和接收WCHAR_T*,即 wchar_t*适用于 Windows 和uint16_t*Linux。因为 uint16_t只是一个整数类型,显然它不会有任何问题。

我想过只是替换L"string"和u"string"摆脱不必要的转换。但尚不完全清楚二进制类型wchar_t和类型如何兼容char16_t?

似乎 1C 使用 UTF-16,并且char16_t为它创建了类型......这是否有问题,即使不是在这种情况下特别是,但总的来说,在用wchar_t新的替换旧的之间是否存在问题char16_t?

c++
  • 1 个回答
  • 10 Views
Martin Hope
megorit
Asked: 2022-01-23 15:49:50 +0000 UTC

为什么将 int(&)[Rs][Cs] 转换为 int** 不起作用?

  • 2

实验,试图做一个小技巧:

void int_array_2d_show_impl(int** array, std::size_t rows, std::size_t cols)
{
    for (std::size_t row = 0; row < rows; ++row)
        for(std::size_t col = 0; col < cols; ++col)
            std::clog << array[row][col]
                      << (col == cols-1 ? '\n' : ' ');
}

template<std::size_t Rows, std::size_t Cols>
void int_array_2d_show_ref(int (&array)[Rows][Cols])
{
    int_array_2d_show_impl((int**)array,Rows,Cols);
}

但它不起作用。静态分析器说它static_cast不允许转换int(*)[N]为int**. 当然,Sish cast 可以工作,但会破坏代码,并且int_array_2d_show_impl什么也不显示。为什么会这样?什么是UB?它们在内存中的存储方式不同吗?这样的代码不会输出任何东西,但它在没有编译时间和运行时间错误的情况下执行。至少垃圾应该已经被取出来了......

Post Scriptum:结果是这样的:

void int_array_2d_show_impl(int* array, std::size_t rows, std::size_t cols)
{
    for (std::size_t row = 0; row < rows; ++row)
        for(std::size_t col = 0; col < cols; ++col)
            std::clog << array[row*cols+col]
                      << (col == cols-1 ? '\n' : ' ');
}

template<std::size_t Rows, std::size_t Cols>
void int_array_2d_show_ref(int (&array)[Rows][Cols])
{
    int_array_2d_show_impl(*array,Rows,Cols);
}
c++
  • 1 个回答
  • 10 Views
Martin Hope
megorit
Asked: 2022-01-06 04:22:00 +0000 UTC

使用具有多个类型参数的概念

  • 0

我无法理解如何以及是否可以使用以下概念:

template <typename Type1, typename Type2>
concept StdByteContainer =
    (std::same_as<Type1,std::remove_cvref_t<std::basic_string<Type2>>>
        || std::same_as<Type1,std::remove_cvref_t<std::vector<Type2>>>
        || std::same_as<Type1,std::remove_cvref_t<std::list<Type2>>>
        || std::same_as<Type1,std::remove_cvref_t<std::deque<Type2>>>
        || std::same_as<Type1,std::remove_cvref_t<std::set<Type2>>>)
    && (std::same_as<Type2,std::byte>
        || (std::is_integral_v<Type2> && sizeof(Type2)==1));

我试着这样写:

template <StdByteContainer Type1<Type2>>
void function(const Type1<Type2>& container);

所以:

template <StdByteContainer Type1, StdByteContainer Type2>
void function(const Type1<Type2>& container);

所以:

template <StdByteContainer Type1, Type2>
void function(const Type1<Type2>& container);

所以:

template <StdByteContainer Type1 Type2>
void function(const Type1<Type2>& container);

它不起作用,静态分析器写道:

error: 'StdByteContainer' requires more than 1 template argument

完全可以这样写,还是这样的概念基本不能接受?尽管解析器错过了概念的声明,但认为它是有效的......如果有的话,我使用GCC-10.

c++
  • 1 个回答
  • 10 Views
Martin Hope
megorit
Asked: 2022-01-04 18:52:41 +0000 UTC

Boost.Asio 示例中的异步 ping 是如何工作的?

  • 0

我从这里举了一个在 Linux 中像标准命令一样执行 ping 的示例。我无法弄清楚这段代码的一件事:

如您所见,代码通过两个处理程序的调用循环,其中一个处理程序通过计时器调用。反过来,处理程序调用异步(延迟)调用该处理程序的方法。

start_receive + handle_receive没有关于循环如何工作的问题,一切都很清楚。问题是内部handle_receive调用必须handle_timeout通过计时器取消。所以,反过来,不应该重新运行start_send。通话timer_.cancel();确实发生(检查)。

事实证明,循环start_send + handle_timeout应该在第一个收到的答案处中断。但这不会发生(代码运行)。我不明白为什么。它是如何工作的?

c++
  • 2 个回答
  • 10 Views
Martin Hope
megorit
Asked: 2021-12-31 19:14:17 +0000 UTC

如何创建一个简单的概念来将类型限制为列表?

  • 3

我试图写下我的第一个概念,但遇到了一个我不理解的错误。
这是代码:

#include <type_traits>
#include <string>

template<typename Type>
concept String =  std::is_same_v<Type,const char*>
               || std::is_same_v<Type,std::string>;

template<String Type>
void function(Type&& string)
{
    std::forward<Type>(string);
}

int main()
{
    std::string string{"7"};
    function(string);
    return 0;
}

这是输出:

错误:使用不满足约束的函数“void function(Type) [with Type = std::__cxx11::basic_string]”

我读过requires,但我不明白如何在这种情况下应用它?

c++
  • 1 个回答
  • 10 Views
Martin Hope
megorit
Asked: 2021-12-28 21:17:23 +0000 UTC

如何在 find_package 之后从 CMake 获取包含目录的路径?

  • 1

<PackageName>_DIR输出到 的路径<PackageName>Config.cmake。
<PackageName>_ROOT什么都不输出。
我没有用谷歌搜索任何其他变量。例如,
K找到了一个 variable ,但它是特定于这个库的。 是否有一种正常的添加方式,使其不依赖于文件的当前位置,并且通常在平台上?BoostBoost_INCLUDE_DIRS

<prefix>/<PackageName>*/includetarget_include_directories

cmake
  • 2 个回答
  • 10 Views
Martin Hope
megorit
Asked: 2021-11-18 00:35:48 +0000 UTC

OpenVPN启动后如何让Systemd运行脚本?

  • 0

一般来说,我正在尝试使用服务执行脚本。所以它由于某种原因不起作用:

[Unit]
Description=Description
After=network.target
After=openvpn.service

[Service]
ExecStart=/path_to_dir/script.sh --flag param
Type=simple
RemainAfterExit=false

[Install]
WantedBy=multi-user.target

这是他写的:

tun0: error fetching interface information: Device not found
my_script.service: Succeeded.

内容openvpn.service:

# This service is actually a systemd target,
# but we are using a service since targets cannot be reloaded.

[Unit]
Description=OpenVPN service
After=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/true
ExecReload=/bin/true
WorkingDirectory=/etc/openvpn

[Install]
WantedBy=multi-user.target
linux
  • 1 个回答
  • 10 Views
Martin Hope
megorit
Asked: 2021-10-13 16:29:17 +0000 UTC

std::move 和 std::forward 到底是做什么的?

  • 3

我熟悉移动语义和完美转发。但我有一个问题,如下:

void function(Type&& argument)
{
    std::is_lvalue_reference<decltype(argument)>::value;
    std::is_rvalue_reference<decltype(argument)>::value;
    std::move(argument);
}

template <typename Type>
void function(Type&& argument)
{
    std::is_lvalue_reference<decltype(argument)>::value;
    std::is_rvalue_reference<decltype(argument)>::value;
    std::forward<Type>(argument);
}

如果使用std::is_lvalue_referenceand std::is_rvalue_reference,那么很明显 C++ 知道函数内部的内容(左值或右值)。所以它std::forward做了以下事情:如果一个右值来了,它返回一个右值,如果一个左值来了,它返回一个左值。那些。有一些看似毫无意义的工作正在进行。但是,没有std::forward“完美转移”是行不通的。没有std::move“重定位语义”是行不通的。它是通过实验检查的。那么到底有什么意义呢?

c++
  • 1 个回答
  • 10 Views
Martin Hope
megorit
Asked: 2020-10-03 17:04:09 +0000 UTC

%I 38400 为 TERM 环境变量提供什么?

  • 2

我正在寻找如何设置自动登录到所需的 TTY。成立。它/sbin/agetty通过 systemd 服务使用。所以,有这个条目:

ExecStart=-/sbin/agetty --autologin 用户名 --noclear %I 38400 linux

通常,以粗体突出显示的内容进入 TERM 环境变量。你只需要了解它提供了什么。谷歌搜索对我没有帮助。

一般来说,我从来没有在任何地方找到关于应该将什么以及如何写入标准环境变量的描述。像man TERM,也许有一些资源可以看?

linux
  • 1 个回答
  • 10 Views
Martin Hope
megorit
Asked: 2020-10-01 02:06:05 +0000 UTC

如何将通过 systemd 服务运行的脚本的输出重定向到监视器?

  • 1

在Raspi OS(无 GUI)上,脚本通过systemd运行。日志写在/var/log/logfile. 还需要在监视器上为用户显示信息。据我所知,在启动时,systemd 和其他东西都有输出。你能告诉我如何从Bash脚本中得出结论吗?

linux
  • 2 个回答
  • 10 Views
Martin Hope
megorit
Asked: 2020-07-31 00:27:19 +0000 UTC

如何更改 QToolTip 工具提示的文本和背景颜色?

  • 3

按钮文本和背景的颜色设置如下:

button->setStyleSheet("background-color: #000000; color: #FFFFFF;");

设置按钮的工具提示:

button->setToolTip("tooltip");

尝试使用 QPalette:

QPalette palette;
palette.setColor(QPalette::Inactive,QPalette::ToolTipText,"#000000");
button->setPalette(palette);

但不起作用。字体颜色非常苍白(与按钮文本相同,但在深色背景上),几乎看不见。告诉我如何解决问题?

c++
  • 2 个回答
  • 10 Views
Martin Hope
megorit
Asked: 2020-07-29 14:38:11 +0000 UTC

为什么连接信号槽时必须写&Class::Slot?

  • 2

当然,一般来说,使用&符号更明显的是指向函数的指针。但!毕竟,根本没有必要。据我记得在C中:

     function == &function
(*ptr2func)() == ptr2func()

那么为什么在将信号连接到插槽(不带 &)时会显示错误?

错误:必须调用对非静态成员函数的引用

c++
  • 1 个回答
  • 10 Views
Martin Hope
megorit
Asked: 2020-07-24 05:05:37 +0000 UTC

参数包 + 右值参考:它是什么,它是如何工作的,我在哪里可以阅读它?

  • 1

例子:

template<typename... Type>
void function(Type&&... args)
{
    /* code */
}

我知道它们是什么parameter pack,rvalue reference它们是如何工作的。但我也知道它不仅仅是parameter pack+ rvalue reference,而且rvalue它在这里有一个非常不同的上下文。但是在cppreference.com其他地方或其他地方,我没有找到关于它为什么以及如何工作以及它甚至被称为什么的详细解释。我将不胜感激有关此未记录的“奇迹”的信息,该“奇迹”并不少见。

PS:我发现了一些有趣的东西,直接来自第 14 个标准:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4164.pdf

考虑这段代码:

 void foo( X&& x );

 template<class Y>
 void bar( Y&& y );

这些参数根本不同。

c++
  • 1 个回答
  • 10 Views
Martin Hope
megorit
Asked: 2020-07-19 20:18:32 +0000 UTC

为什么 foreach() 中的 find_library() 不起作用?

  • 0

编码:

foreach (item avformat avcodec avfilter)

    message("${item}")
    
    find_library(ff_lib
        NAMES
            ${item}
        PATH_SUFFIXES
            ffmpeg-4.3-win64-dev/lib/
        REQUIRED
    )

    message("${ff_lib}")
    
    set(FFmpeg ${FFmpeg} ${ff_lib})
    
    unset(ff_lib)
    
endforeach ()

message("${FFmpeg}")

结论:

avformat
C:/Users/me/Desktop/ffmpeg-4.3-win64-dev/lib/avformat.lib
avcodec
C:/Users/me/Desktop/ffmpeg-4.3-win64-dev/lib/avformat.lib
avfilter
C:/Users/me/Desktop/ffmpeg-4.3-win64-dev/lib/avformat.lib
C:/Users/me/Desktop/ffmpeg-4.3-win64-dev/lib/avformat.lib;C:/Users/me/Desktop/ffmpeg-4.3-win64-dev/lib/avformat.lib;C:/Users/me/Desktop/ffmpeg-4.3-win64-dev/lib/avformat.lib
-- Configuring done
-- Generating done

PS:即 即使在 之后,该变量ff_lib也不会被覆盖unset(ff_lib)。

cmake
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5