草庐IT

std-ranges

全部标签

c++ - 在不丢失索引信息的情况下对 std::vector 进行排序

我想在不丢失索引信息的情况下使用存储值对std::vector进行排序。例如,std::vectorvec;vec.resize(3);vec[0]=20;vec[1]=10;vec[2]=6;std::sort(vec.begin(),vec.end());//HereIwanttoknowtheorderofindicesaftersortoperationwhichis2,1,0 最佳答案 您想保存原始vector的排列,因此您需要另一个vector来从{0,...,n-1}构建正确的双射到{0,...,n-1}:vector

c++ - clang++ (3.3/Xcode) 中 std::function 的定义在哪里

问题已解决=>看到最后的更新我正在尝试使用std::function但看起来只包括不提供定义。我试图编译以下代码:#includestd::functionf=nullptr;以c++11作为编译选项:%clang++-c-std=c++11t.cc原因:t.cc:3:6:error:notypenamed'function'innamespace'std'std::functionf=nullptr;~~~~~^t.cc:3:14:error:expectedunqualified-idstd::functionf=nullptr;^2errorsgenerated.我错过了什么?我

c++ - 按排序顺序迭代 std::vector

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎与helpcenter中定义的范围内的编程无关。.关闭9年前。Improvethisquestion我从API收到一个Foovector,如下所示:std::vectorfoos;然后我写了一个函数叫做std::vectorgetKeys(conststd::vector&)它遍历容器并为每个Foo对象提取一个std::string类型的键。您将如何按排序顺序遍历foo中的Foo对象,其中排序是在键上以不区分大小写的方式进行的。此外,我不想制作foos的排序拷贝,因为它很大。这是我的尝试,

c++ - 如何在 "std::vector<char>"容器中查找单个单词

我有一个混合的二进制文件(即图像)和一些人类可读的数据(即HTTPheader)存储在“std::vector”容器中。(数据以“CRLFCRLF(\r\n\r\n)”指示符分隔)谁能建议如何在“std::vector”容器中找到“\r\n\r\n”的开始位置?是否可以使用STL库执行类似“std::size_tpos=data.find("\r\n\r\n");(其中数据为“std::vector”)”之类的操作?谢谢。 最佳答案 您不需要将要查找的模式放入容器中。一个C字符串就足够了。std::vectorv=....;cons

c++ - std::async 在指定 launch::async 时不执行

也许我错过了C++11中新std::async的正确用法,但是这个声明(在cppreference.com结束):Iftheasyncflagisset(i.e.policy&std::launch::async!=0),thenasyncexecutesthefunctionfonaseparatethreadofexecutionasifspawnedbystd::thread(f,args...),exceptthatifthefunctionfreturnsavalueorthrowsanexception,itisstoredinthesharedstateaccessibl

c++ - 如果我知道在输入大小内会检测到差异,那么在可能较短的输入上调用 std::equal 是否安全

在进行一些网络编程时,我偶然发现了以下困境:我正在做类似的事情:staticconststringmy_ip_prefix="111.222.233";//goingthroughlistofIPswhereonemighthaveprefixmy_ip_prefixif(equal(my_ip_prefix.begin(),my_ip_prefix.end(),ip_list[i].begin()))){//}如果我知道ip_list中的IP可以比my_ip_prefix短,但在那种情况下它们与my_ip_prefix的区别至少在其中一个位置是安全的调用平等的?示例:使用ip"10.

c++ - 根据标准,std::vector 是否受静态初始化顺序问题的影响?

我可以在非Pod静态数据成员构造函数的构造函数中安全地将内容存储在vector中吗?示例:classFoo{public:staticFoo&instance(){staticFooinst;returninst;}voidstore(intx){numbers.push_back(x);}private:Foo(){}std::vectornumbers;};classBar{public:Bar(){Foo::instance().store(5);}};classThing{public:staticBarbar;};//inthing.cpp:BarThing::bar;上述代

c++ - 当存在 std::map 时,将代码语句作为参数的宏失败

我在代码语句周围使用了一个宏,以引入嵌套异常处理:#defineTRAP_EXCEPTION(statement)\try\{\try{statement}\catch(Engine::Exception&e)\{\throwMyException(e.message());\}\}在一个案例引发编译器错误之前,它一直运行良好。我设法构建了一个最小的例子:TRAP_EXCEPTION(std::mapMap;)catch(MyException&e){}这会产生以下错误...我该如何修复它(最好是在宏中)?>errorC2143:syntaxerror:missing'>'before

c++ - std::make_shared 三元返回不编译

我正在使用VisualStudio2010并拥有用于创建抽象基类的两个实现之一的工厂。工厂Create方法采用bool标志并返回shared_ptr中的两个impls之一。使用if语句对我来说效果很好,但是当我尝试使用带有make_shared调用的三元时编译器会报错。classBase{public:Base(){};};classFoo:publicBase{public:Foo(){};};classBar:publicBase{public:Bar(){};};classFactory{public:staticstd::shared_ptrCreate(boolisFoo){

c++ - std::unique_ptr 和指向指针的指针

我想结合使用std::unique_ptr和FreeImage的FITAG。普通C中的代码将是:...loadimage;FITAG*tag=NULL;FreeImage_GetMetadata(FIMD_EXIF_EXIF,bitmap,"Property",&tag);...dosomestuffwithtag;FreeImage_DeleteTag(tag);...deleteimage;我对unique_ptr的尝试:std::unique_ptrtag(NULL,&FreeImage_DeleteTag);FreeImage_GetMetadata(FIMD_EXIF_EXI