问题标签 [stl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
34502 浏览

c++ - 如何重载 std::swap()

std::swap()在排序甚至赋值期间被许多 std 容器(例如std::listand )使用。std::vector

但是 std 的实现swap()非常通用,对于自定义类型来说效率很低。

因此,可以通过重载std::swap()自定义类型特定的实现来获得效率。但是如何实现它以便 std 容器使用它呢?

0 投票
8 回答
1421 浏览

c++ - 这段代码是滥用 STL 的 find_if 吗?

假设我有一个存储在向量中的服务器名称列表,我想一次与他们联系,直到他们成功响应为止。我正在考虑通过以下方式使用 STL 的 find_if 算法:

其中 ContactServer 是谓词函数对象。
一方面,存在一个问题,因为谓词不会总是为相同的服务器名称返回相同的结果(因为服务器停机时间、网络问题等)。但是,无论使用哪个谓词副本,都将返回相同的结果(谓词没有真实状态),因此在这种情况下,与状态保持谓词的原始问题无关。

你说什么?

0 投票
29 回答
17380 浏览

c++ - 我应该避免哪些 C++ 陷阱?

我记得第一次学习 STL 中的向量,一段时间后,我想在我的一个项目中使用布尔向量。在看到一些奇怪的行为并做了一些研究之后,我了解到bools 的向量并不是真正的 bools 向量

在 C++ 中是否还有其他常见的陷阱需要避免?

0 投票
10 回答
26639 浏览

c++ - 为什么 std::fstream 类不采用 std::string?

这不是一个设计问题,真的,虽然看起来很像。(嗯,好吧,这是一个设计问题)。我想知道的是为什么 C++std::fstream类不在std::string其构造函数或开放方法中采用 a。每个人都喜欢代码示例,所以:

这让我一直在处理文件。C++ 库肯定会std::string尽可能使用吗?

0 投票
3 回答
1452 浏览

c++ - C++ STL 问题:分配器

我有一个关于 C++ STL 的(可能是愚蠢的)问题。当我创建一个容器(向量、集合、映射等)时,它是分配在堆栈上还是堆上?如果我做了一个集合,放了 500 万个字符串,我会不会担心堆栈溢出?

0 投票
8 回答
18838 浏览

c++ - 为什么不能对 std::vector 使用前向声明?

如果我像这样创建一个类:

并像这样使用它:

编译时编译器失败main.cpp。现在我知道的解决方案是#include "B.h",但我很好奇它为什么会失败。g++orcl的错误信息在这件事上都不是很有启发性。

0 投票
11 回答
216523 浏览

c++ - 如何从具有特定值的 stl 向量中删除项目?

我正在查看 stl 矢量的 API 文档,并注意到矢量类上没有允许删除具有特定值的元素的方法。这似乎是一种常见的操作,而且没有内置的方法来做到这一点似乎很奇怪。

0 投票
9 回答
11216 浏览

c++ - 我可以在 C++ 中使用具有值语义的多态容器吗?

作为一般规则,我更喜欢在 C++ 中使用值而不是指针语义(即使用vector<Class>而不是vector<Class*>)。通常,不必记住删除动态分配的对象可以弥补性能上的轻微损失。

不幸的是,当您想要存储都派生自一个公共基础的各种对象类型时,值集合不起作用。请参见下面的示例。

我的问题是:我可以吃蛋糕(价值语义)并吃掉它(多态容器)吗?还是我必须使用指针?

0 投票
5 回答
11074 浏览

c++ - STL 矢量与地图擦除

在 STL 中,几乎所有容器都有擦除功能。我的问题是在向量中,擦除函数返回一个指向向量中下一个元素的迭代器。地图容器不这样做。相反,它返回一个 void。有谁知道为什么会出现这种不一致?

0 投票
11 回答
6961 浏览

c++ - pop_back() 真的会使 std::vector 上的 *all* 迭代器无效吗?

此代码不起作用,因为pop_back()调用时it无效。但我没有找到任何关于std::vector::pop_back().

你有一些关于那个的链接吗?