Questions tagged «stl»

标准模板库(STL)是包含通用容器,迭代器,算法和函数对象的C ++库。当C ++标准化时,STL的大部分被标准库所采用,并且标准库中的这些部分有时也被错误地统称为“ STL”。

5
如何对对象使用优先级队列STL?
class Person { public: int age; }; 我想将Person类的对象存储在优先级队列中。 priority_queue< Person, vector<Person>, ??? > 我认为我需要为比较对象定义一个类,但是我不确定。 而且,当我们写的时候 priority_queue< int, vector<int>, greater<int> > 大工作如何进行?
80 c++  stl 

7
C ++异常:抛出std :: string
当我的C ++方法遇到奇怪的东西并且无法恢复时,我想抛出一个异常。可以扔一个std::string指针吗? 这是我期待做的事情: void Foo::Bar() { if(!QueryPerformanceTimer(&m_baz)) { throw new std::string("it's the end of the world!"); } } void Foo::Caller() { try { this->Bar(); // should throw } catch(std::string *caught) { // not quite sure the syntax is OK here... std::cout << "Got " << caught << std::endl; } }
80 c++  exception  stl 

15
在C ++中是否有生产就绪的无锁队列或哈希实现?
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 2年前关闭。 改善这个问题 对于C ++中的无锁队列,我已经进行了大量的搜索。我找到了一些代码和一些试验-但是没有什么我能编译的。无锁哈希也将是受欢迎的。 摘要:到目前为止,我还没有肯定的答案。没有“生产就绪”库,令人惊讶的是,现有的库都不符合STL容器的API。
80 c++  stl  lock-free 

10
像ac数组一样如何初始化'const std :: vector <T>'
有没有一种优雅的方法来创建和初始化const std::vector&lt;const T&gt;类似const T a[] = { ... }的固定数目(很少)的值? 我需要经常调用一个期望vector&lt;T&gt;,但是在我的情况下,这些值永远不会改变。 原则上我想到了类似 namespace { const std::vector&lt;const T&gt; v(??); } 因为v不会在此编译单元之外使用。
79 c++  stl 

7
从STL容器继承实现而不是委托可以吗?
我有一个适用于std :: vector的模型,用于对特定于域的对象的容器进行建模。我想向用户公开大多数std :: vector API,以便他们可以在容器上使用熟悉的方法(大小,清除,在等)和标准算法。在我的设计中,这似乎是我反复出现的模式: class MyContainer : public std::vector&lt;MyObject&gt; { public: // Redeclare all container traits: value_type, iterator, etc... // Domain-specific constructors // (more useful to the user than std::vector ones...) // Add a few domain-specific helper methods... // Perhaps modify or hide a few methods (domain-related) }; …
78 c++  stl 

5
如何排序STL向量?
我想排序一个 vector vector&lt;myClass&gt; object; 其中myclass包含许多int变量。如何vector对的任何特定数据变量进行排序myClass。
76 c++  sorting  stl 

10
UTL8与STL中的宽字符转换
是否可以以平台无关的方式将std :: string中的UTF8字符串转换为std :: wstring,反之亦然?在Windows应用程序中,我将使用MultiByteToWideChar和WideCharToMultiByte。但是,代码是为多个操作系统编译的,我仅限于标准C ++库。

6
C ++ 11 std :: set lambda比较函数
我想std::set用自定义比较功能创建一个。我可以使用来将其定义为类operator(),但是我想享受在其中使用lambda的能力,因此我决定在具有std::set作为成员的类的构造函数的初始化列表中定义lambda函数。但是我无法获得lambda的类型。在继续之前,这里有一个例子: class Foo { private: std::set&lt;int, /*???*/&gt; numbers; public: Foo () : numbers ([](int x, int y) { return x &lt; y; }) { } }; 搜索后,我发现了两种解决方案:一种是使用std::function。只需将设置比较函数类型设置为be,std::function&lt;bool (int, int)&gt;然后像我一样完全传递lambda即可。第二种解决方案是编写一个make_set函数,例如std::make_pair。 解决方案1: class Foo { private: std::set&lt;int, std::function&lt;bool (int, int)&gt; numbers; public: Foo () : numbers ([](int x, int y) { return …

6
qsort vs std :: sort的性能?
斯科特·迈耶斯(Scott Meyers)认为,在他的有效STL书中-项目46。他声称由于内联的事实,这种std::sort方法的速度要快670%std::qsort。我测试了自己,发现qsort更快:(!!有人可以帮我解释一下这种奇怪的行为吗? #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; #include &lt;cstdio&gt; const size_t LARGE_SIZE = 100000; struct rnd { int operator()() { return rand() % LARGE_SIZE; } }; int comp( const void* a, const void* b ) { return ( *( int* )a - *( int* )b …
75 c++  performance  sorting  stl 

2
多图比矢量图有什么优势?
我不明白,如果我们可以创建向量图或集合图,为什么存在多图。对我而言,唯一的区别是: 使用equal_range在多重映射为获得一个关键的要素和载体,我们只需使用的地图[]运营商,拥有元素的矢量。 使用multimap.insert(make_pair(key,value))在多重映射为添加元素和map_of_vectors[key].push_back(value)在载体的图谱。 那么为什么要使用多图呢?对我来说,拥有一个向量要好于两个迭代器来获取键的所有值。 这个问题也适用于向量的unordered_map和unordered_multimap。
75 c++  stl  map  multimap 

4
std :: map密钥类必须满足哪些要求才能成为有效密钥?
我想将给定类的对象映射到另一个类的对象。但是,我想用作键的类不是我编写的,它很简单struct,只有几个值。std :: map对其内容进行排序,我想知道它是如何执行的,是否可以将任何任意类用作键,或者是否需要定义一组需求(操作符和其他内容)。 如果是这样,我可以为实现操作符映射使用的类创建一个包装器。我只需要知道我首先需要实现的内容,而在网上找到的类的引用都没有指定它们。
75 c++  stl  map  key 

29
我应该避免哪些C ++陷阱?[关闭]
在这里很难说出要问什么。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,因此不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 9年前关闭。 我记得第一次学习STL中的向量,过了一段时间,我想为我的一个项目使用布尔向量。在看到一些奇怪的行为并进行了一些研究之后,我了解到bool的向量实际上并不是bool的向量。 在C ++中还有其他需要避免的常见陷阱吗?
74 c++  stl 

11
嵌入式C ++:是否使用STL?
我一直是嵌入式软件工程师,但通常在OSI堆栈的第3层或第2层。我不是一个真正的硬件专家。我通常总是做电信产品,通常是手提电话/手机,这通常意味着类似ARM 7处理器的东西。 现在,我发现自己处于一个更通用的嵌入式世界中,这是一个小型初创公司,在那儿我可能会转向“功能不那么强大”的处理器(有主观知识)-我无法预测哪个。 我已经读了很多有关在嵌入式系统中的C ++中使用STL的争论,并且没有明确的答案。有一些关于可移植性的小问题,还有一些关于代码大小或运行时的问题,但是我有两个主要的担忧: 1-异常处理;我仍然不确定是否要使用它(请参阅嵌入式C ++:是否使用异常?) 2-由于嵌入式系统可能带来的问题,我非常不喜欢嵌入式系统中的动态内存分配。我通常有一个缓冲池,该缓冲池在编译时静态分配,并且仅提供固定大小的缓冲区(如果没有缓冲区,则系统复位)。STL当然会进行很多动态分配。 现在,我必须决定是整个公司永远使用还是放弃STL(它涉及一些非常核心的软件)。 我跳哪条路?超级安全并丢失了构成C ++的大部分内容(imo,不仅是语言定义),而且以后可能会遇到问题,还是不得不添加大量异常处理以及现在可能还有其他一些代码? 我很想只使用Boost,但是1)我不确定它是否可以移植到我可能要使用的每个嵌入式处理器上,以及2)在他们的网站上,他们说他们不保证/不推荐它的某些部分。用于嵌入式系统(尤其是FSM,这似乎很奇怪)。如果我去助推器&以后我们发现问题....
74 c++  stl  embedded 



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.