草庐IT

STL-string

全部标签

C++总结(7):STL无序容器之unordered_set、unordered_map、unordered_multiset、unordered_multimap详解

前两节介绍了STL中的顺序容器和关联容器,本节来介绍一下无序容器。无序容器与关联容器类似,但是关联容器是顺序排序的,而无序容器实现了未排序(哈希)的数据结构。文章目录1unordered_set2unordered_map3unordered_multiset4unordered_multimap1unordered_set无序集合(unordered_set)是一种使用哈希表实现的无序关联容器,其中键被哈希到哈希表的索引位置,因此插入操作总是随机的。无序集合上的所有操作在平均情况下都具有常数时间复杂度O(1),但在最坏情况下,时间复杂度可以达到线性时间O(n),这取决于内部使用的哈希函数,但

c++ - Qt Creator 无法解析 STL 容器

我已经下载了适用于Windows的Qt5.4,并在Windows8.1Pro中运行它。它与MingW和QtCreator3.3一起提供。我已经使用Qt几年了。QtCreatorIDE中似乎仍然缺少一个非常必要的组件。假设类Card是用函数getSymbol()定义的:classCard{public:stringgetSymbol()const;}在代码的某处,我有一个std::vector的Card:vectorplayable;还有代码中的其他地方:playable[0].getSymbol();^-----------------Notethisdot当我在上面的行中输入句点时,

c++ - 错误:无法将 std::vector<std::basic_string<char>> 转换为 std::string*

作为C++的新手,我曾尝试在我的一个程序中创建一个简单的void函数以显示数组。但是,如标题所示,存在错误。我认为这是一个问题,因为我试图用与函数参数不同形式的数组来调用它。我不确定如何修改它。#include#includeusingnamespacestd;voiddisplay_array(stringarr[]){inti;for(i=0;ipaths;cout>current;while(current!="0"){paths.push_back(current);cin>>current;}display_array(paths);}感谢任何帮助。

c++ - STL RBTree 是有序迭代 O(N ln N) 吗?

这个问题在这里已经有了答案:What'sthetimecomplexityofiteratingthroughastd::set/std::map?(2个答案)关闭7年前。问题:STL红黑树(STL_tree.h)中序迭代时间复杂度是O(NlnN)吗?我在网上搜索,找不到答案。我认为任何ADT的有序迭代的时间复杂度应该是O(N)。如果我错了,请告诉我。我从这段代码中查看了STLRB树(https://www.sgi.com/tech/stl/stl_tree.h)看来迭代器的++运算符不是O(1)而是O(lnN)。void_M_increment(){if(_M_node->_M_ri

【C++练级之路】【Lv.8】【STL】list类的模拟实现

快乐的流畅:个人主页个人专栏:《C语言》《数据结构世界》《进击的C++》远方有一堆篝火,在为久候之人燃烧!文章目录引言一、结点二、迭代器2.1成员变量与默认成员函数2.2operator*2.3operator->2.4operator++2.5operator--2.6relationaloperators三、list3.1成员变量3.2迭代器3.2.1begin3.2.2end3.3默认成员函数3.3.1constructor3.3.2destructor3.3.3copyconstructor3.3.4operator=3.4修改3.4.1insert3.4.2push_front3.4

c++ - 为什么不能将 mem_fn 应用于 std::string 的成员函数?

structint_holder{intvalue;inttriple(){returnvalue*3;}};intmain(intargc,constchar*argv[]){std::stringabc{"abc"};int_holderone{1};autof1=mem_fn(&std::string::clear);autof2=mem_fn(&int_holder::triple);f1(abc);f2(one);}我在Xcode中测试这样的代码,编译器发出这样的错误似乎mem_fn可以用于用户定义类的成员函数,但不能用于标准字符串的成员函数,有什么不同,为什么?感谢您的阅读

c++ - STL复制功能的实现?

以下是std::copy函数的一些实现细节(来自vs2015):templateinline_OutIt_Copy_impl(_InIt_First,_InIt_Last,_OutIt_Dest,_Scalar_ptr_iterator_tag){//copy[_First,_Last)to[_Dest,...),pointerstoscalarsptrdiff_t_Count=_Last-_First;_CSTDmemmove(&*_Dest,&*_First,_Count*sizeof(*_First));return(_Dest+_Count);}似乎我们可以在标量类型的情况下使

c++ - boost::any_range<gsl::string_span<>> 在 Release模式下崩溃

我观察到以下代码的一个相当奇怪的行为:#include#include#include#include#include#include"gsl.h"templateusingImmutableValueRange=boost::any_range;templateImmutableValueRangemake_transforming_immutable_range(constC&container){returncontainer|boost::adaptors::transformed([](consttypenameC::value_type&v)->T{//std::cout>

c++ - std::string & 作为 gcc 5 中的模板参数和 abi_tag

考虑以下代码(test1.cpp):#includeexternstd::stringtest_string;templateclasstest{public:staticvoidbar(){}};std::stringtest_string("teststring");voidfoo(){test::bar();}现在让我们交换最后两行代码(test2.cpp)的顺序:#includeexternstd::stringtest_string;templateclasstest{public:staticvoidbar(){}};voidfoo(){test::bar();}std::

c++打包和解包参数包以在没有STL的情况下调用匹配的函数指针

我正在尝试创建一个类,该类将存储指向具有可变数量参数的函数的指针,并在稍后调用它。想法是为函数创建一个包装器,该函数将在对象析构时调用所述函数。这样我就可以确保在退出某些功能后进行一些清理。我现在拥有的是FaheemMitha发布的一点修改代码here.这是带有示例的工作代码(我正在使用VisualStudio2015编译它):#include"stdafx.h"#include#includeusingnamespacestd;templatestructseq{};templatestructgens:gens{};templatestructgens{typedefseqtype