草庐IT

STL-Like

全部标签

c++ - "stable_sort()ing"C++ 中的 STL <列表>

我认为问题标题已经足够清楚了:是否可以在C++中对std::list进行stable_sort()?或者我必须将它转换为std::vector吗?我问是因为我尝试了一个简单的例子,它似乎需要RandomAccessIterators,而链表没有。那么,如何对std::list()进行稳定排序?编辑:给我一个错误的示例代码:#include#include//...listthe_list;stable_sort(the_list.begin(),the_list.end());g++给我大约30行错误(太长而无法粘贴),其中一些错误涉及RandomAccessIterators(以及称

c++ - STL变化大吗?

我想熟悉标准模板库的使用。如果我看到1995-97年左右出版的一般引用或初学者指南,我可以依赖其中的信息吗?在过去的十几年里,STL发生了多大的变化? 最佳答案 是的!有新的补充。TR1更新现已在大多数环境中实现。您的旧书对于学习基础知识仍然很有用。但是您会希望找到TR1的引用资料以了解一些非常有用的新功能。在几个方面,新功能优于旧功能。(想到的是bind1st和bind2nd功能完全封装在更通用的绑定(bind)结构中。)此外,还有boost库。(boost.org)Boost是一个库的集合,有些非常有用,有些则晦涩难懂。TR1中

c++ - 成员变量和STL算法

#include#include#includeusingnamespacestd;structFoo{inti;doubled;Foo(inti,doubled):i(i),d(d){}intgetI()const{returni;}};intmain(){vectorv;v.push_back(Foo(1,2.0));v.push_back(Foo(5,3.0));vectoris;transform(v.begin(),v.end(),back_inserter(is),mem_fun_ref(&Foo::getI));return0;}有没有更简洁的方法来访问成员变量然后使用我

c++ - 使用 not2 时将 struct vs class 作为 STL 仿函数

学习STL我写了一个简单的程序来测试仿函数和修饰符。我的问题是关于使用CLASS或STRUCT编写仿函数并尝试使用函数适配器对其进行操作的区别。据我在C++中的理解,CLASS和STRUCT之间的区别在于,在最后一种情况下,默认情况下成员是公共(public)的。这也是我在该站点的答案中多次阅读的内容。所以请解释为什么即使我在尝试使用not2修饰符时将所有成员(只是一个函数重载())声明为public,这段短代码也会编译失败。(我还没有尝试过其他修饰符,例如粘合剂)#include#include#include#includeusingnamespacestd;templatevoi

c++ - STL 迭代器和 'const'

当我使用迭代器时,我遇到了一个问题,似乎是对const的某种隐式转换。我不太确定哪个代码是相关的(如果我知道我可能不会问这个问题!)所以我会尽力说明我的问题。typedefsetContainer;//notconstvoidLargeObject::someFunction(){//notconstContainer::iteratorit;//notconstfor(it=c.begin();it!=c.end();++it){//assumecisa"Container"(*it).smallObjectFunction();//notaconstfunction}}但是我总是得

c++ - 为什么我应该将 C++ 运算符重载为全局函数(STL 这样做),注意事项是什么?

为什么我要将C++operator()重载为全局函数而不是成员函数。例如,==运算符。为什么要这样做?例如在STL库中。 最佳答案 通常的规则是将左侧对象修改为成员和返回新对象的二元运算符是免费的职能;后者的主要动机是因为编译器不会转换左侧以匹配成员;如果你的类(class)支持任何隐式转换,然后是所有常见的二进制运算符应该是自由函数,以便应用相同的转换规则对于左侧和右侧,例如:classComplex{public:Complex(doubler,doublei=0.0);booloperator==(Complexconst&o

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++ - 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