草庐IT

stl-algorithm

全部标签

C++ STL 映射无法识别 key

我有这段代码,CBString只是我用于某些处理的字符串类char*scrummyconfigure::dosub(strtypeinput){CBStringtstring;tstring=input;uintbegin;uintend;begin=tstring.findchr('$');end=tstring.findchr('}',begin);CBStringk=tstring.midstr(begin+2,end-2);//thisisBASEstrtypevname=(strtype)((constunsignedchar*)k);strtypebvar=(strtype

c++ - 在 STL 中使用 sort() 对数组进行排序

我正在为一个问题编写代码:编写一个方法来对字符串数组进行排序,以便所有的字谜都彼此相邻。如果我的容器是vector,那就很简单了,因为vector有迭代器,可以用在STL排序函数中,代码如下:但是如果容器是一个数组呢?Array没有迭代器,不能直接使用sort()对数组进行排序。我想知道有什么方法可以创建一个数组迭代器,以便我可以使用sort()直接对数组进行排序?谢谢!#include#include#include#includeusingnamespacestd;boolcompare(strings1,strings2){sort(s1.begin(),s1.end());//

c++ - std::sort 在 std:vector of pointers 上失败

以下代码在对vector进行排序时崩溃。#include#include#includeusingnamespacestd;structFoo{intx;//inty;Foo():x(0){}};structCmp{booloperator()(Foo*p1,Foo*p2)const{if(p1->x!=p2->x)returnp1->xx;//if(p1->y!=p2->y)returnp1->yy;returntrue;}};intmain(){vectorv;for(inti=0;i为什么会这样? 最佳答案 boolopera

c++ - STL Vector比较问题

vector定义为std::vector,想知道为什么以下是有效的:if(vecMetaData[0]!="Somestring"){...但不是这个:switch(vecMetaData[1]){...VisualStudio提示:errorC2450:switchexpressionoftype'std::basic_string'isillegal1>with1>[1>_Elem=char,1>_Traits=std::char_traits,1>_Ax=std::allocator1>]1>Nouser-defined-conversionoperatoravailableth

c++ - STL vector 性能

每次我调用push_back时,STLvector类都使用复制构造函数存储对象的拷贝。它不会减慢程序的速度吗?我可以有一个自定义链表类来处理指向对象的指针。虽然它没有STL的一些好处,但仍然应该更快。请看下面这段代码:#include#include#includeusingnamespacestd;classmyclass{public:char*text;myclass(constchar*val){text=newchar[10];strcpy(text,val);}myclass(constmyclass&v){coutlist;myclassm1("first");mycla

c++ - STL Map 或 HashMaps 线程安全吗?

我可以在多线程程序中使用map或hashmap而不需要锁吗?即它们是线程安全的吗?我想同时从map中添加和删除。那里似乎有很多相互矛盾的信息。对了,我在Ubuntu10.04下使用的是GCC自带的STL库编辑:就像互联网上的其他人一样,我似乎得到了相互矛盾的答案? 最佳答案 您可以安全地同时执行读取操作,即调用const成员函数。但是,如果其中一个涉及写入,则您不能同时执行任何操作,即非常量成员函数的调用对于容器来说应该是唯一的,并且不能与任何其他调用混合。即您不能从多个线程更改容器。所以你需要使用lock/rw-lock确保访问安

c++ - STL排序题

我有结构vector:vectormyvec;自定义是一种结构:structCustom{doublekey[3];};如何按key[0]对myvec进行排序。使用STL排序算法的key[1]或key[2]? 最佳答案 编写自定义比较器:templatestructCustomComp{booloperator()(constCustom&lhs,constCustom&rhs)const{returnlhs.key[i]然后排序,例如通过使用std::sort(myvec.begin(),myvec.end(),CustomCom

没有 <string> 和 STL 的 C++ 字符串

我过去用C++的次数不多,最近一直在用C#,我真的很难再次回到C++的基础知识中。这是特别棘手的,因为工作要求不能使用最方便的C++结构,因此所有字符串都必须是char*,并且没有提供STL列表。我目前正在尝试做的是创建一个字符串列表,使用STL或在C#中我根本不会花时间。基本上我想要一个功能,例如:char**registeredNames=newchar*[numberOfNames];然后,RegisterName(const*charconstname,constintlength){//looptoseeifnamealreadyregisteredsnippedif(not

c++ - 仅对 STL 容器使用 C++ 是一种不好的做法吗?

首先介绍一下背景......在下文中,我使用C、C++和Java编写(通用)算法,而不是带有界面的gui和花哨的程序,而是简单的命令行算法和库。我开始学习Java编程。我对Java非常满意,并且我学会了如何使用Java容器,因为它们往往会降低簿记的复杂性,同时保证出色的性能。我断断续续地用过C++,但我用它肯定不如用Java,而且感觉很麻烦。我对C++的了解还不足以在不查找每个函数的情况下使用它,所以我很快又回到了尽可能多地坚持使用Java。然后我突然转向汇编语言的破解和黑客攻击,因为我觉得我过于关注一种太高级的语言,我需要更多关于CPU如何与内存交互以及真正发生的事情的经验与1和0。

c++ - 有什么用STL写的很酷的项目吗?

我想学STL通过快速浏览真实项目源。在哪里可以找到使用STL的高质量项目? 最佳答案 Notepad++:仅限纯Win32+STL!BasedonapowerfuleditingcomponentScintilla,Notepad++iswritteninC++andusespureWin32APIandSTLwhichensuresahigherexecutionspeedandsmallerprogramsize.Byoptimizingasmanyroutinesaspossiblewithoutlosinguserfrien