草庐IT

stl-algorithm

全部标签

c++ - c++ STL中是否有任何三态类型?

c++STL中有三态类型吗? 最佳答案 没有,但是有boosttribool. 关于c++-c++STL中是否有任何三态类型?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/613825/

c++ - STL 映射与 vector 的迭代器访问性能?

使用迭代器遍历STL映射与使用vector之间的性能差异是什么?我想使用map键进行插入、删除和一些访问,但我还需要对map中的每个元素进行常规访问。 最佳答案 使用map和vector,遍历整个集合是O(N)。但是(如列表vsvector)vector连续存储元素,因此访问下一个元素要便宜得多,因为它将优化使用缓存,而映射不会。但由于您需要根据键进行查找,因此没有其他选择。您可以使用按第一个元素排序的对vector,但如果集合需要是可变的,这将非常慢。只需使用map。 关于c++-ST

c++ - STL 映射与 vector 的迭代器访问性能?

使用迭代器遍历STL映射与使用vector之间的性能差异是什么?我想使用map键进行插入、删除和一些访问,但我还需要对map中的每个元素进行常规访问。 最佳答案 使用map和vector,遍历整个集合是O(N)。但是(如列表vsvector)vector连续存储元素,因此访问下一个元素要便宜得多,因为它将优化使用缓存,而映射不会。但由于您需要根据键进行查找,因此没有其他选择。您可以使用按第一个元素排序的对vector,但如果集合需要是可变的,这将非常慢。只需使用map。 关于c++-ST

c++ - 你最喜欢的 STL 技巧是什么?

很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。为了帮助澄清这个问题以便可以重新打开它,visitthehelpcenter.关闭11年前。我用C++编程已经有一段时间了,但时不时会偶然发现一个使用STL的代码片段,这需要我自己花费相当长的时间和更多的代码来完成。STL需要相当长的时间来适应,并且没有多少资源可以提供有关如何使用它的真实示例。请与我分享您最喜欢的STL功能! 最佳答案 使用erase-remove-idiom在线性时间中从vector中删除某些元素:

c++ - 你最喜欢的 STL 技巧是什么?

很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。为了帮助澄清这个问题以便可以重新打开它,visitthehelpcenter.关闭11年前。我用C++编程已经有一段时间了,但时不时会偶然发现一个使用STL的代码片段,这需要我自己花费相当长的时间和更多的代码来完成。STL需要相当长的时间来适应,并且没有多少资源可以提供有关如何使用它的真实示例。请与我分享您最喜欢的STL功能! 最佳答案 使用erase-remove-idiom在线性时间中从vector中删除某些元素:

c++ - STL 容器是否设计为允许继承?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:IsitokaytoinheritimplementationfromSTLcontainers,ratherthandelegate?我的问题与Whydon'tSTLcontainershavevirtualdestructors?有关有些人(包括前一个问题的作者)确信没有虚拟dtor意味着类不可继承。我对如此强烈的声明持怀疑态度,因此我询问了来源或一些推理,但大多数受访者保持沉默。也没有人回复我的answer所以我认为质疑前一个问题中的假设并澄清这个重要问题是个好主意。STL容器是否设计为允许继承?更一般地

c++ - STL 容器是否设计为允许继承?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:IsitokaytoinheritimplementationfromSTLcontainers,ratherthandelegate?我的问题与Whydon'tSTLcontainershavevirtualdestructors?有关有些人(包括前一个问题的作者)确信没有虚拟dtor意味着类不可继承。我对如此强烈的声明持怀疑态度,因此我询问了来源或一些推理,但大多数受访者保持沉默。也没有人回复我的answer所以我认为质疑前一个问题中的假设并澄清这个重要问题是个好主意。STL容器是否设计为允许继承?更一般地

c++ - 是否有可能在任何地方引发异常的 STL 容器方法列表?

我知道STL会抛出内存分配错误,或者如果包含的类型在其构造函数/赋值运算符中抛出。否则,显然“一些”STL方法可能会引发其他异常。每个人似乎都提到的例子是vector::at(),但我在任何地方都找不到其他人的列表。有人知道这样的list吗? 最佳答案 不会100%准确,并且适​​用于C++03,但基于通过GCC4.3.4grepping的半小时工作包括,忽略tr1和ext但包括iostream。至关重要的是,其中一些检查可能是由于此实现更喜欢更具防御性的编码,并且可能未在标准中强制要求并且普遍可用....位集std::overfl

c++ - 是否有可能在任何地方引发异常的 STL 容器方法列表?

我知道STL会抛出内存分配错误,或者如果包含的类型在其构造函数/赋值运算符中抛出。否则,显然“一些”STL方法可能会引发其他异常。每个人似乎都提到的例子是vector::at(),但我在任何地方都找不到其他人的列表。有人知道这样的list吗? 最佳答案 不会100%准确,并且适​​用于C++03,但基于通过GCC4.3.4grepping的半小时工作包括,忽略tr1和ext但包括iostream。至关重要的是,其中一些检查可能是由于此实现更喜欢更具防御性的编码,并且可能未在标准中强制要求并且普遍可用....位集std::overfl

c++ - STL映射查找线程安全

STLmap线程上的find调用安全吗? 最佳答案 不,C++规范不保证任何STL容器上操作的规范中的线程安全。如果线程安全很重要,您应该提供自己的锁定。话虽如此,不同的实现似乎提供了不同的保证。例如,大多数似乎允许多个并发读取器,只要没有同时执行写入。如果您不关心可移植性,则可以研究实现文档。例如来自here对于SGISTL:TheSGIimplementationofSTListhread-safeonlyinthesensethatsimultaneousaccessestodistinctcontainersaresafe,