草庐IT

STL-Like

全部标签

c++ - C++ STL 中的确定性随机数流

我想提供一个数字,然后收到一组随机数。但是,无论我在哪台计算机上运行它,我都希望这些数字相同(假设我提供相同的种子)。基本上我的问题是:在C++中,如果我使用rand(),但为srand()提供用户定义的种子而不是当前时间,我能否在任何计算机上生成相同的随机数流? 最佳答案 有几十个PRNG可以作为库使用。选一个。我倾向于使用MersenneTwister.通过使用外部提供的库,您可以绕过您的语言库rand()的奇怪或错误实现的风险。只要您的平台都符合相同的数学语义,您就会得到一致的结果。MT是我的最爱,因为我是一名物理学家,我将这

c++ - 所有的 STL 容器都通过引用返回它们的元素吗?

最近在学习STL,想知道STL容器是不是returnbyreference?例如:vector.first();map[key];*vector.begin();Oranypossiblereturnthatendswithelement(orvaluetype)ofcontainer例如:std::vectorelements;elements.push_back(20);elements[0]=60;//thiswillalsochangethevalueelements.front()=23;//eventhefunctionsalsobehavesamewaylikesubsc

c++ - 编写 STL 兼容的迭代器

我正在尝试转换一个迭代器类,我必须与STL兼容,以便它可以与STL算法一起使用。在下面的简单(坦率地说无用)示例中,它应该打印0到5的值,包括在内,我收到以下错误,ISOC++禁止递增“Iterator(*)()”类型的指针和,从“Iterator(*)()”到“int”的无效转换我做错了什么?谢谢。#include#include#includeclassIterator:publicstd::iterator{public:Iterator(inti=0):val(i){if(val5)throw;}booloperator==(Iteratorconst&rhs)const{re

【C++干货铺】STL简述 | string类的使用指南

=========================================================================个人主页点击直达:小白不是程序媛C++系列专栏:C++干货铺代码仓库:Gitee=========================================================================目录什么是STLSTL的版本STL的六大组件STL的缺陷string类C语言中的字符串标准库中的string类string类常用的接口使用指南string类中常见的构造string类对象的访问及遍历操作string类对象的容量操

c++ - STL 设置交集和输出

我有一个这样的代码片段,要在VC++2010下编译。std::sets1;std::sets2;std::setres_set;std::set_intersection(s1.begin(),s1.end(),s2.begin(),s2.end(),res_set.begin());据我所知,这应该有效。但是,我收到构建错误:c:\programfiles(x86)\microsoftvisualstudio10.0\vc\include\algorithm(4494):errorC3892:'std::_Tree_const_iterator::operator*':youcann

c++ - 了解 STL 中的迭代器

C++STL中的迭代器到底是什么?就我而言,我使用的是list,而且我不明白为什么你必须制作一个迭代器std::list::const_iteratoriElementLocator;通过取消引用运算符显示列表的内容:cout在将其分配给可能list.begin()之后.请解释迭代器到底是什么,以及为什么我必须取消引用或使用它。 最佳答案 STL中包含三个构建block:容器算法迭代器在概念层面上,容器保存数据。这本身并不是很有用,因为您想对数据做一些事情;您想要对其操作、操纵它、查询它、玩弄它。算法正是这样做的。但是算法不保存数据

c++ - 从 STL std::queue 中删除而不破坏已删除的对象?

我能在STL容器(队列和列表)上找到的所有文档都说,对于任何删除函数,都会调用已删除对象的析构函数。这意味着我无法在任何时候使用std::queue来获得一个队列,该队列只是一个需要对其执行某些操作的对象列表。我希望能够在他们排队等待我对他们做某事时将他们添加到队列中。然后我想在完成处理后将它们从中删除,而不破坏相关对象。从我读过的文档来看,这似乎是不可能的。我误读了文档吗?除了基本的“队列”之外,STL中是否还有其他类型的队列在调用pop_front时不调用已删除对象的析构函数?编辑澄清:在我的例子中,我使用的是指针列表。像这样:dbObject*someObject;queuein

c++ - C++ 中模板和 STL 的缺点

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion使用STL或模板有什么缺点吗?是否有不适合的情况。

c++ - STL 字符串类中的运算符 char*

为什么STL字符串类没有内置重载的char*运算符?他们有什么特定的理由要避免它吗?如果有的话,那么使用带有C函数的字符串类会变得更加方便。我想知道你的看法。 最佳答案 以下是JosuttisSTL书中的引述:However,thereisnoautomatictypeconversionfromastringobjecttoaC-string.Thisisforsafetyreasonstopreventunintendedtypeconversionsthatresultinstrangebehavior(typechar*of

c++ - STL push_back 优化导致数组下标超出数组边界

测试环境:CentOS7.0g++4.8.2ArchLinuxg++4.9.020140604(预发布版)ArchLinuxg++4.9.1编译命令用例:通过:g++-Wallt.cpp失败:g++-Wall-O2t.cpp通过:g++-Wall-O2t.cpp#并将第13行的2替换为3通过:g++-Wall-O2t.cpp#并注释掉第14行通过:g++-Wall-O2--std=c++11t.cpp#forg++4.8/4.9失败信息:t.cpp:Inmemberfunction‘voidstd::vector::_M_insert_aux(std::vecto::iterator,