草庐IT

stl_algobase

全部标签

c++ - STL vector reserve() 和 copy()

您好,我正在尝试使用以下2行缩写的代码执行从一个vector(vec1)到另一个vector(vec2)的复制(完整的测试应用程序如下):vec2.reserve(vec1.size());copy(vec1.begin(),vec1.end(),vec2.begin());虽然对vec2的调用设置了vectorvec2的容量,但将数据复制到vec2似乎并未填充从vec1到vec2的值。将copy()函数替换为对push_back()的调用按预期工作。我在这里错过了什么?感谢您的帮助。vectest.cpp测试程序,然后是结果输出。编译器:cygwin上的gcc3.4.4。自然/***

c++ - STL vector reserve() 和 copy()

您好,我正在尝试使用以下2行缩写的代码执行从一个vector(vec1)到另一个vector(vec2)的复制(完整的测试应用程序如下):vec2.reserve(vec1.size());copy(vec1.begin(),vec1.end(),vec2.begin());虽然对vec2的调用设置了vectorvec2的容量,但将数据复制到vec2似乎并未填充从vec1到vec2的值。将copy()函数替换为对push_back()的调用按预期工作。我在这里错过了什么?感谢您的帮助。vectest.cpp测试程序,然后是结果输出。编译器:cygwin上的gcc3.4.4。自然/***

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库中,您实际