草庐IT

std-ranges

全部标签

c++ - 限制 std::set 的大小

我有一个关于std::set容器的简短问题。现在我正在使用推回功能喂养我的集合。当然,对于每个push_back,集合变得越来越大。我只对最新的30个左右的元素感兴趣...可以删除较旧的元素。所以我的想法是将集合的大小限制为30个左右的元素,并通过这样做来摆脱不需要的旧元素。但是,该集合默认不支持限制。我可以偶尔检查一下集合的大小,然后手动删除多余的元素。有没有更聪明的方法?问候伦皮 最佳答案 作为解决方案,您可以将set数据结构封装到一个类中,并在该类中控制元素计数。 关于c++-限制

c++ - 将 std::exception 转换为 EXCEPTION_POINTERS

我可能完全误解了如何使用GoogleBreakpadAPI,如果是这种情况,我愿意接受评论/建议/粗鲁的评论。我正在尝试调用以下C++函数:boolWriteMinidumpForException(EXCEPTION_POINTERS*exinfo);我有一个对std::exception的引用:try{returnQApplication::notify(receiver,event);}catch(std::exception&ex){eh_.WriteMinidumpForException(?????);//...dosomemorestuffandultimatelykil

c++ - CLOCKS_PER_SEC 与 std::clock() 的结果不匹配

我正在使用以下短程序来测试std::clock():#include#includeintmain(){std::clock_tBegin=std::clock();intDummy;std::cin>>Dummy;std::clock_tEnd=std::clock();std::cout但是,在等待几秒钟输入“虚拟”值后,我得到以下输出:CLOCKS_PER_SEC:1000000Begin:13504End:13604Difference:100这显然没有多大意义。无论我等多久,差异总是在100左右。我错过了什么?有没有我忘记包含的标题?我正在使用带有GCC4.2的Xcode。

c++ - 如何使用 libjpeg 从 std::istream 读取 JPEG?

libjpeg可以从FILE*或缓冲区中读取JPEG数据。我的数据来自std::istream。我可以将整个std::istream读入缓冲区以与libjpeg一起使用,但如果可能的话,我宁愿让libjpeg直接从std::istream中读取。如何做到这一点? 最佳答案 您只需要为您的istream提供包装器。定义一个结构体,例如structJpegStream{jpeg_source_mgrpub;std::istream*stream;bytebuffer[4096];}然后需要四种方法对流进行操作:voidinit_sour

c++ - 在 std::auto_ptr 的构造函数中使用 `explicit` 关键字有什么原因吗?

这是用于在VS2008编译器中从标准指针构造std::auto_ptr对象的构造函数。templateclassauto_ptr{public:explicitauto_ptr(_Ty*_Ptr=0)_THROW0():_Myptr(_Ptr){}private:_Ty*_Myptr;};explicit是否有任何特殊原因?上面使用关键字?换句话说,为什么我不能初始化auto_ptr与std::auto_ptrptr=newClassA;? 最佳答案 因为否则您可能会无意中执行以下操作:voidfoo(std::auto_ptrp)

c++ - 如何将 char 数组放入 std::string

我分配了一个char数组然后我需要将它作为一个字符串返回,但我不想复制这个char数组然后释放它的内存。char*value=newchar[required];f(name,required,value,NULL);//fillthearraystrResult->assign(value,required);delete[]value;我不想像上面那样做。我需要将数组放在std字符串容器中。我该怎么做?编辑1:我知道我不应该这样做,并且该字符串不是为此目的而设计的。MB有人知道我可以使用的char数组的另一个容器实现吗? 最佳答案

c++ - 如何将所有对从一个 std::map 移动到另一个

假设我有以下内容:std::mapm1;std::mapm2;从m1移动所有键/值对的最直接方法是什么?进入m2?我希望:m1在此操作后为空m2最初可能有对m2中与m1不具有相同key的那些对应该单独保留m2中与m1具有相同key的那些对应该被m1的对覆盖我需要来自的调用组合吗??解决方案JamesKranze的解决方案满足我的要求。for(constauto&p:m1)m2[p.first]=p.second;m1.clear();JoachimPileborg的建议仅在m2和m1没有相同的键时才有效(即m2的值不会被m1的相同键的值覆盖)std::move(m1.begin(),m

c++11:为什么 std::forward 中的 static_assert 是必需的?

在move.h中,forward有两个重载templateconstexpr_Tp&&forward(typenamestd::remove_reference::type&__t)noexcept{returnstatic_cast(__t);}templateconstexpr_Tp&&forward(typenamestd::remove_reference::type&&__t)noexcept{static_assert(!std::is_lvalue_reference::value,"templateargumentsubstituting_Tpisanlvalueref

c++ - std::vector 与 std::array 性能对比

我正在查看新的计时库(C++11)并尝试使用它。我写了以下两个程序:vector.cpp#include#include#includeintmain(){std::vectorvector(1000000,0.);autostart=std::chrono::high_resolution_clock::now();for(inti(0);i(end-start).count()数组.cpp#include#include#include#includeintmain(){std::arrayarray;std::fill(array.begin(),array.end(),0.);

c++ - std::async 不并行化任务

在此代码段中使用C++11std::async:intfoo(){::sleep(2);return123;}intmain(){futurer1(async(foo));intr2=foo();cout它产生正确的结果,但连续运行两个foo(整个应用程序运行4秒)。编译为:g++-std=gnu++11-O2foo.cc-lpthread(Ubuntu12.1064位,gcc4.7.2) 最佳答案 您可能需要添加launchpolicystd::launch::async的:std::async(std::launch::asyn