草庐IT

stl_algobase

全部标签

c++ - 使用 STL/Boost 初始化硬编码集<vector<int>>

像这样question已经问过,我想使用STL初始化一个容器,其中元素以最干净的方式进行硬编码。在这种情况下,元素是一个双重嵌套的容器:set>A;我想(例如)将以下值放入:A=[[0,0,1],[0,1,0],[1,0,0],[0,0,0]];C++0x很好,使用g++4.4.1。STL更可取,因为我不对代码的任何其他部分使用Boost(尽管我不介意用它举例!)。 最佳答案 这确实使用了g++4.4.1,带有-std=c++0x#include#includeusingnamespacestd;intmain(){set>A={{

c++ - 使用 C++ 和 STL 的 vector 元素乘积

用C++实现逐元素乘积并不难:vectora_array;vectorb_array;vectorc_array;vectordot_array;....for(inti=0;i这是一个非常简单的实现,我想知道STL中是否已经有更高效的算法。谢谢! 最佳答案 std::transform可用于将两个vector相乘:#include#include//Precondition:b.size()>=a.size()&&r.size()>=a.size()std::transform(a.begin(),a.end(),b.begin(

c++ - 我应该使用什么 C++ STL 类来减少由大量小分配引起的碎片?

随着时间的推移,我的C++类(class)构建了一个树结构。树中的每个节点当前都是在构造时分配的(使用new)。节点类只使用几个字节的内存。随着树的增长,可能会有100,000个节点;除了理论最大值2^33之外,树的构造时不知道最大节点数。我通过指针引用树结构中的节点。所有节点都在树被破坏时被释放,并且只有在那时。我正在寻找一个标准库容器或内存分配器/池,我可以使用它来分配和存储我的树类中的节点,以减少内存碎片和内存分配开销。我想避免编写自定义分配器。容器应具有以下两个属性:分配的对象不会在内存中移动,因此可以通过指针安全地引用。该类为大块对象分配内存,从而减少内存碎片。请注意,我不要

c++ - 如果我想让它忽略重复的元素,应该使用哪个 STL 容器?

我正在寻找一些STL(但不是boost)容器,在以下操作之后将包含2个元素:“abc”和“xyz”:std::XContainerstring_XContainer;string_XContainer.push_back("abc");string_XContainer.push_back("abc");string_XContainer.push_back("xyz");顺便说一句,我需要它只是为了在最后调用string_XContainer.size(),以获得唯一字符串的总数。所以也许我什至不需要容器,还有更优雅的方法吗? 最佳答案

C++: STL: set: 存储值常量

具有以下代码:#include#include#include#includeusingnamespacestd;classEmployee{//...int_id;string_name;string_title;public:Employee(intid):_id(id){}stringconst&name()const{return_name;}voidsetName(stringconst&newName){_name=newName;}stringconst&title()const{return_title;}voidsetTitle(stringconst&newTitl

c++ - 加密和序列化 STL 字符串和其他容器

我在STL容器(vector)中有数据。vector中的每个节点都是一个结构,其中还包含STL字符串。structrecord{stringname;stringlocation;intsalary;}vectoremployees;我想序列化员工,但我也想在序列化之前对其进行加密。我的加密函数是这样的:Encode(constchar*inBfr,constintin_size,char**outBfr,int&out_size)通过搜索,STL标准似乎不要求我的结构的内存是连续的,所以我不能只获取employees变量的内存。有没有其他聪明的方法可以将此编码功能与基于STL的结构/

c++ - 从类型 T 的数组初始化类型 T* 的 STL vector

如果我有一个数组,例如:structS{...};Sm_aArr[256];我想用它来构造一个vector,例如:std::vectorm_vecS;有没有办法做到这一点而不是遍历并推回&m_aArr[i]?我知道我不能使用在数组上使用std::begin和std::end的常规方法,因为vector是指针之一,而原始数组是一个的对象,所以我们不能只传入一个内存块。 最佳答案 您可以使用标准库为您进行迭代和推回:std::transform(std::begin(m_aArr),std::end(m_aArr),std::back_

c++ - 从 STL 优先级队列创建最小堆

我正在从STL优先级队列创建一个最小堆。这是我正在使用的类(class)。classPlane{private:intid;intfuel;public:Plane():id(0),fuel(0){}Plane(constint_id,constint_fuel):id(_id),fuel(_fuel){}booloperator>(constPlane&obj){return(this->fuel>obj.fuel?true:false);}};在main中,我因此实例化了一个对象。priority_queue,Plane>pq1;pq1.push(newPlane(0,0));我从

c++ - STL "closest"方法?

我正在寻找一种STL排序,如果容器中不存在精确值,它会返回“最接近”目标值的元素。它需要快速,所以基本上我正在寻找一个稍微修改过的二进制搜索......我可以写它,但它似乎应该已经存在...... 最佳答案 你是说lower_bound/upper_bound函数吗?它们执行二进制搜索并返回高于您要查找的值的最近元素。说明:全局版本的lower/upper_bound仅在范围已排序时才有效,因为它们在内部使用某种二进制搜索。(显然,std::map中的lower/upper_bound方法始终有效)。你在你的问题中说你正在寻找某种二

C++ STL 范围容器

我正在寻找一个从double映射到对象指针的容器。但是,每个键只是与该对象对应的一系列double值。例如,可能有一个键/值对或container[1.0]应该返回ptr,container[3.0]也应该返回ptr,container[-1.0]应该是未定义的。是否有任何默认情况下具有类似行为的对象,还是我必须自己实现它?编辑这是我编写的实际代码,可能更容易对其进行调试/提供建议。//Behavior:Arangeisdefinedmathematicallyas(min,max]classdblRange{public:doublemin;doublemax;dblRange(do