草庐IT

std-ranges

全部标签

c++ - 静态 std::stringstream 的 Clang-tidy 警告

我有以下MCVE:#includestructA{staticstd::stringstreams;};std::stringstreamA::s;intmain(){}当我在此代码上运行clang-tidy6.0.1时,我收到以下警告:static_sstream.cpp:7:22:warning:initializingnon-localvariablewithnon-constexpressiondependingonuninitializednon-localvariable'out'[cppcoreguidelines-interfaces-global-init]std::

c++ - std::condition_variable::wait_until 相对于 std::this_thread::sleep_for 有什么优势吗?

在时间等待场景中:oursoftwareworksinthebackground,andsynchronizesdatawiththeserverinevery20-30minutes.我想用std::this_thread::sleep_for但我的上级强烈反对任何形式的sleep功能。他推荐std::condition_variable::wait_until(lock,timeout-time,pred)不知道在这种情况下sleep_for有什么缺点吗? 最佳答案 正如评论中已经指出的那样,这仅取决于您的用例。两者之间的主要区

c++ - xcode std::wcout 与 wchar_t 或 std::wstring!

我正在尝试将xcode中的wstring/wchar_t打印到控制台,但不幸的是它只适用于基本字符(我认为是ascii)字符,其他所有字符都以数字显示,例如以下内容:std::cout当cout版本按预期打印“äöüu”时,我在使用wchar_t时得到以下信息:\344\366\374u关于如何解决这个问题有什么想法吗?我正在使用xcode3.2.264位和gcc4.2,文件编码设置为Unicode(UTF-8)谢谢! 最佳答案 我有一个类似的问题,但与wostream/wofstream相关。用谷歌搜索,这是答案:tc_ofstr

c++ - 删除 std::list 中的项目,同时保留分配的项目

我构建了一个std::list定期合并在一起的项目(图形组件结构)。这个想法是,如果我发现一个连接两个组件的节点,它们就会变成一个单独的组件,而我的列表会枚举我的组件。每个组件都有一个指向其“父”组件的句柄(在本例中为std::list::iterator),该句柄在合并后设置。通过这种方式来确定特定节点所属的组件,我沿着这条链向上走。最后我要找的是std::list上的操作这让我可以使用项目N的迭代器,并将其从列表中删除但不释放它:列表其余部分的结构的修改方式与正常删除它的方式完全相同。最好是比重新分配项目、从列表中复制它并调用真正的remove更简单的东西。或erase.也许我可以

c++ - std::sort() 和 std::sort_heap() 的内存复杂度是多少?

如标题-std::sort()和std::sort_heap()的内存复杂度是多少?(后者需要std::make_heap()所以我也想知道它的内存复杂度。)我尝试在这些网站上搜索:http://www.cplusplus.com/reference/http://en.cppreference.com/w/但要么我错过了,要么他们只提到了时间复杂度。上述函数的内存复杂性是否在任何地方指定(在C++标准或其他文档中)?或者这可能取决于实现? 最佳答案 对于std::sort()我在Cboard上找到了一个答案,它几乎是这样说的:Qu

c++ - 如何在没有特定模板大小写的情况下存储 std::bind 的 vector ?

通过question之后在std::bind上,我想知道是否可以保存由std::bind创建的函数的vector这样我就可以避免使用std::function及其重量级包装。#include#include#include#includeintadd(inta,intb){returna+b;}intmain(){//Ibelievethishereisjustaspecialtypeofboundfunction.autoadd2=std::bind(add,std::placeholders::_1,2);autoadd3=std::bind(add,std::placeholde

c++ - 使用 Swig 将 std::set 转换为 ruby

我正在使用Swig在ruby​​中使用C++,目前我已经完成了文件david.h的简单示例#includeclassDavid{public:David(intx){this->x=x;}voidannounce(){printf("David%d\n",x);}intx;};还有一个像这样的swig文件%module"david"%{#include%}classDavid{public:David(intx);voidannounce();intx;};我的extconf.rb看起来像这样require'mkmf'system('swig-c++-rubylibdavid.i')o

c++ - 为什么 std::deque 在默认构造函数中为其元素分配内存?

使用g++5.4编译器和GNU标准库libstdc++.so.6,std::vector的默认构造函数创建一个空容器,仅初始化堆栈上的内部簿记数据成员。它稍后在堆上为数据元素分配缓冲区(当插入第一个元素时)。直到最近,我还认为这是任何具有动态分配内存的标准顺序容器的常见行为。但是,std::deque的工作方式不同。跟踪以下代码#includeintmain(){std::dequed;return0;}用ltrace给出__libc_start_main(0x4024fa,1,0x7ffd088be0f8,0x405bd0_ZNSt8ios_base4InitC1Ev(0x60835

c++ - std::clamp - 检测函数返回值是否绑定(bind)到 const T&

最好不要将std::clamp返回值绑定(bind)到constref,如果它的min或max参数之一是右值.std::clamp的典型实现(非常简化):templateconstexprconstT&clamp(constT&value,constT&min,constT&max){returnvalue正如cppreferenceforstd::clamp中所述当有人写下时,情况很危险:intn=-1;constint&r=std::clamp(n,0,255);//risdangling有没有办法在编译时检测这些情况? 最佳答案

c++ - 在 MSVC 的 Debug模式下分配给 std::future 时崩溃

与Release不同,在Debug模式下使用MSVC构建时,以下代码会随机崩溃。#includeusingnamespacestd;intmain(){autol=[](){};autof=async(launch::async,l);for(inti=0;i控制台输出显示:f:\dd\vctools\crt\crtw32\stdcpp\thr\mutex.c(51):mutexdestroyedwhilebusy完整的调用栈是:https://pastebin.com/0g2ZF5C1现在显然这只是一个压力测试,但我是不是在做一些非常愚蠢的事情?在我看来,将新任务重新分配给现有的fu