草庐IT

C++:使用高效获取/放置多个元素的队列?

所以,我觉得C++中应该有一个很好的内置解决方案,但我不确定它是什么。我需要一个队列(理想情况下是线程安全的,但如果需要的话我可以自己将其同步包装)来有效处理字节组-允许不同大小的读/写。所以,界面看起来像//removesthefirstbytesToReadelementsfromthefrontofthequeueandplacestheminarray;returnstheactualnumberofbytesdequeuedintdequeue(unsignedchar*array,intbytesToRead)//AddsbytesToWriteelementsfromar

c++ - 从容器中元素的成员函数中累积结果

我有一个类,有一个返回计数的函数,如下所示:classCTestClass{public://...size_tGetCount()const;//...};在我程序的某处,我有一个该类对象的vector。我有一个函数来获取总计数(CTestClass::GetCount()的结果总和),像普通循环一样实现:size_tsum=0;for(vector::const_iteratorit=v.begin();it!=v.end();++it){sum+=it->GetCount();}我想重构它以使用标准库中可用的设施,于是我想到了accumulate。我已经能够通过使用函数对象(简单

c++ - std::unordered_set<Foo> 作为类 Foo 的成员

我正在编写一个类,该类具有自己类型的unordered_set作为成员。因此我需要为hash编写特化.这个特化需要在声明Foo之后定义。但在我看来,好像我已经需要hash的特化了。在定义成员之前unordered_set.至少它不会编译并在那里失败。我尝试了哈希模板的前向声明,但也无法使其正常工作。相关代码片段为:classFoo{public:inti;std::unordered_setdummy;Peer(std::unordered_set);};namespacestd{templatestructhash{size_toperator()(constFoo&f)const{

c++ - 用 C++ 编写一个简单的面向对象图

我真的在努力成为一名更好的程序员,并编写更模块化、更有条理的代码。作为练习,我试图制作一个非常简单的GraphC++中的类STL.在下面的代码中,我的Node对象不编译becausethecommentedlineresultsinareferencetoareferenceinSTL.#includeclassKeyComparable{public:intkey;};booloperatoradjacent;};我想将边缘存储在set中(bykey)因为它允许通过键快速移除边缘。如果我要存储list,这样可以正常工作,但它不允许key快速删除.如果我使用std::set,通过边缘所

C++ 设置搜索对元素?

所以我有一组pairs我想使用find()搜索将在该对的“第一个”中的单个字符串,然后如果我在第一个中找到该字符串,我想从该函数返回第二个。我目前的尝试是..myList::iteratori;i=theList.find(make_pair(realName,"*"));returni->second; 最佳答案 C++11可以接受吗?autoit=find_if(theList.begin(),theList.end(),[&](constpair&val)->bool{returnval.first==realName;});

c++ - STL的 vector 调整大小

我找不到这条信息。我在这里处理一个奇怪的情况,我在一个循环中,我可以在任何给定时间获得随机信息。此信息必须存储在vector中。现在每一帧我都必须设置这个vector以确保我不会超出空间(我正在使用索引将值写入vector中的随机点)。现在假设没有办法更改这段代码,我想知道,如果我发送的参数恰好是vector的大小,vector是否“忽略”resize()函数?我在哪里可以找到这些信息? 最佳答案 来自MSDN引用1Ifthecontainer'ssizeislessthantherequestedsize,_Newsize,ele

c++ - STL map中的后序遍历

我在gcccomper上使用STL映射,它使用树来存储键值对。迭代器以有序的方式前进,因此有序遍历非常容易。然而,我的输出要求之一是后序遍历。我被特别要求使用map。有什么办法可以做到吗? 最佳答案 没有标准的方法来访问std::map实例的“实际树结构”。此外,该标准不知道(或关心)map的元素在map可能使用的任何内部树中的确切排列方式。红黑树和AVL树都是std::map的有效实现,根据实际使用的情况,您会得到不同的后序遍历。在实践中,我希望它总是R-B或非常相似,但实现自由度通知了标准定义的接口(interface)。简而言

c++ - 结构指针的优先级队列

我知道有类似的线程,但在花了一个小时试图强制我的程序运行后,我决定寻求帮助。首先。我认为我很了解C++,因为我尝试了一些在PHP中非常简单(我最了解的编程语言)但在C++中非常复杂的东西(至少对我来说非常复杂)。所以我想创建结构指针的priority_queue。很明显,我需要创建自己的比较函数。所以我尝试了这段代码:#include#include#includeusingnamespacestd;typedefstructMI{intnr;intkoszt;booloperatorb.koszt;}}miasto,*miasto_wsk;intmain(){priority_que

c++ - 如何检查 vector<bool> 实际上是位 vector 而不是字节 vector ?

我需要存储一个动态的位数组。TheC++referencepageonvector具有以下信息:Thestorageisnotnecessarilyanarrayofboolvalues,butthelibraryimplementationmayoptimizestoragesothateachvalueisstoredinasinglebit.如何确保我的程序使用vector实际上在vector中存储位而不是boolean值(字节)吗? 最佳答案 不要尝试那样做。相反,使用boost::dynamic_bitset这清楚地表明你

c++ - 所有 end() 迭代器都等同于集合类型吗?

在C++中给定一个特定的STL集合,end()值对于相同模板化的所有实例是否相等?换句话说,以下是否适用于所有STL容器和环境(不仅适用于std::map)?std::mapfoo(intseed);std::mapinstance1=foo(1);std::mapinstance2=foo(2);std::map::iteratoritr=instance1.begin();std::map::iteratorendItr=instance2.end();//Comesfromothercollection!for(;itr!=endItr;++itr){//Dosomethingo