草庐IT

stl-algorithm

全部标签

c++ - 是否有任何不属于 C++ 标准库的 STL header ?

我知道一些C++标准库头文件源自STL,例如vector。但是我找不到标准库中仍未包含的STLheader的最新列表。它们存在吗?PS:我想把它们列出来,如果可能的话,我也想知道是否所有主要的实现都包含它们或者从哪里获得它们。 最佳答案 注意,这是逐个函数分解,而不是按标题分解,因为它似乎更有用。如果我们检查SGI'sdocumentationoftheSTL我们发现以下内容:slist已更名std::forward_list.bit_vector已被std::vector的模板规范取代.这个实现可以(不是必须)以bit_vecto

c++ - 是否有任何不属于 C++ 标准库的 STL header ?

我知道一些C++标准库头文件源自STL,例如vector。但是我找不到标准库中仍未包含的STLheader的最新列表。它们存在吗?PS:我想把它们列出来,如果可能的话,我也想知道是否所有主要的实现都包含它们或者从哪里获得它们。 最佳答案 注意,这是逐个函数分解,而不是按标题分解,因为它似乎更有用。如果我们检查SGI'sdocumentationoftheSTL我们发现以下内容:slist已更名std::forward_list.bit_vector已被std::vector的模板规范取代.这个实现可以(不是必须)以bit_vecto

c++ - STL 是否包含哈希表?

这个问题在这里已经有了答案:关闭12年前.PossibleDuplicates:HashtableinC++?cananybodyofferasimplehash_mapexampleinC++?STL是否包含哈希表的实现?如果是这样,您能否提供一个简短的示例来说明如何使用它? 最佳答案 当前的标准实现没有,STL::TR1有,见UnorderedMap.大多数现代编译器都有TR1实现,如果失败,您可以始终使用BoostTR1实现。MSVC通过servicepack1为VS2008提供了它GCC已随4.x一起提供,但您也可以使其与3

c++ - STL 是否包含哈希表?

这个问题在这里已经有了答案:关闭12年前.PossibleDuplicates:HashtableinC++?cananybodyofferasimplehash_mapexampleinC++?STL是否包含哈希表的实现?如果是这样,您能否提供一个简短的示例来说明如何使用它? 最佳答案 当前的标准实现没有,STL::TR1有,见UnorderedMap.大多数现代编译器都有TR1实现,如果失败,您可以始终使用BoostTR1实现。MSVC通过servicepack1为VS2008提供了它GCC已随4.x一起提供,但您也可以使其与3

c++ - 从 DLL 导出 STL 类 - 为什么返回类型没有警告?

我的问题与导出带有STL的C++类有关。例如:class__declspec(dllexport)Hello{std::stringname;public:std::string&getName();voidsetName(conststd::string&name);}各种文章似乎表明这是非常糟糕,这是可以理解的。一切都必须使用相同的编译器设置和CRT版本进行编译。否则一切都会崩溃和燃烧。问题:我不明白为什么只有数据成员似乎有问题。使用下面的代码,我得到:“C4251:需要让类的客户端使用dll接口(interface)";这显然是通过导出实例化的std::string:来解决的st

c++ - 从 DLL 导出 STL 类 - 为什么返回类型没有警告?

我的问题与导出带有STL的C++类有关。例如:class__declspec(dllexport)Hello{std::stringname;public:std::string&getName();voidsetName(conststd::string&name);}各种文章似乎表明这是非常糟糕,这是可以理解的。一切都必须使用相同的编译器设置和CRT版本进行编译。否则一切都会崩溃和燃烧。问题:我不明白为什么只有数据成员似乎有问题。使用下面的代码,我得到:“C4251:需要让类的客户端使用dll接口(interface)";这显然是通过导出实例化的std::string:来解决的st

c++ - 从 C++ (STL) 中的(它的)迭代器类型获取容器类型

给定一个容器很容易获得相关的迭代器,例如:std::vector::iteratori;//Aniteratortoastd::vector我想知道在给定迭代器类型的情况下是否有可能推断出“相应容器”的类型(这里我假设每个容器只有一个(非const)迭代器)。更准确地说,我想要一个适用于所有STL容器的模板元函数(无需为每个容器手动专门化它),例如:ContainerOf::iterator>::type计算为std::vector有可能吗?如果不是,为什么?提前感谢您的帮助! 最佳答案 我认为这是不可能的。在某些STL库中,您实际

c++ - 从 C++ (STL) 中的(它的)迭代器类型获取容器类型

给定一个容器很容易获得相关的迭代器,例如:std::vector::iteratori;//Aniteratortoastd::vector我想知道在给定迭代器类型的情况下是否有可能推断出“相应容器”的类型(这里我假设每个容器只有一个(非const)迭代器)。更准确地说,我想要一个适用于所有STL容器的模板元函数(无需为每个容器手动专门化它),例如:ContainerOf::iterator>::type计算为std::vector有可能吗?如果不是,为什么?提前感谢您的帮助! 最佳答案 我认为这是不可能的。在某些STL库中,您实际

C++ STL Map vs Vector 速度

在我的实验性编程语言的解释器中,我有一个符号表。每个符号由一个名称和一个值组成(该值可以是例如:字符串、int、函数等类型)。起初,我用一个vector来表示表格,并遍历符号检查给定的符号名称是否合适。然后我虽然使用map,在我的例子中是map,会比一直遍历vector要好但是:这部分有点难解释,但我会努力的。如果在我的语言程序中第一次检索变量,当然必须找到它在符号表中的位置(现在使用vector)。如果我每次执行该行时都遍历该vector(想想一个循环),那将非常慢(就目前而言,几乎与微软的批处理一样慢)。所以我可以使用映射来检索变量:SymbolTable[myVar.Name]但

C++ STL Map vs Vector 速度

在我的实验性编程语言的解释器中,我有一个符号表。每个符号由一个名称和一个值组成(该值可以是例如:字符串、int、函数等类型)。起初,我用一个vector来表示表格,并遍历符号检查给定的符号名称是否合适。然后我虽然使用map,在我的例子中是map,会比一直遍历vector要好但是:这部分有点难解释,但我会努力的。如果在我的语言程序中第一次检索变量,当然必须找到它在符号表中的位置(现在使用vector)。如果我每次执行该行时都遍历该vector(想想一个循环),那将非常慢(就目前而言,几乎与微软的批处理一样慢)。所以我可以使用映射来检索变量:SymbolTable[myVar.Name]但