草庐IT

STL-string

全部标签

C++ STL type_traits 问题

我在看最新的C9lecture并注意到一些有趣的事情..在他对type_traits的介绍中,Stephan使用了以下(如他所说,人为的)示例:templatevoidfoo(Tt,true_type){std::coutvoidfoo(Tt,false_type){std::couttemplatevoidbar(Tt){foo(t,typenameis_integral::type());}这似乎比:复杂得多templatevoidfoo(Tt){if(std::is_integral::value)std::cout后一种做法有问题吗?他的方法更好吗?为什么?谢谢。

c++ - 返回 std::string 的函数在没有 return 语句的情况下崩溃,这与返回 int 且没有 return 语句的函数不同

#include#includeusingnamespacestd;stringcrash(){}intnoCrash(){}intmain(){crash();//crashes//noCrash();//doesn'tcrashreturn0;}函数crash()在Mingwg++4.6.2中崩溃,函数noCrash()执行时没有问题。为什么没有return语句返回字符串的函数会崩溃? 最佳答案 两者都是未定义的行为,即使是noCrash也会崩溃。 关于c++-返回std::stri

c++ - std::string 一个容器

std::string是标准c++库中的容器类,仅限于容纳char元素吗? 最佳答案 它是std::basic_string的类型定义,实际上。std::basic_string是专门为字符串操作设计的容器类。此容器也可用于宽字符(wchar_t);对于这种情况,它的typedef将是wstring. 关于c++-std::string一个容器,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/ques

c++ - memset 导致 std::string 赋值崩溃

我有适用于Windows的代码,但现在我正在移植到MAC,使用Xcode3.2.5C/C++编译器版本GCC4.2,它崩溃了。我已将其缩小为memset调用。如果我注释掉memset它会起作用,如果我把它放回代码中就会崩溃。我的头文件中有一个看起来像这样的结构:typedefstruct{intdeviceCount;struct{#defineMAX_DEVICE_ID256#defineMAX_DEVICE_ENTRIES10std::stringdeviceId;//DevicenametoOpenTransportTypeeTransportType;}deviceNodes[

c++ - 从整数值返回固定长度的 std::string

问题->将固定长度的字符串返回给std::string*。目标机器->Fedora11。我必须派生一个函数,它接受整数值并将固定长度的字符串返回到字符串指针;例如->int值在0到-127范围内所以对于int值0->它应该显示000对于值-9->它应该返回-009对于值来说-50->它应该返回-050对于值来说-110->它应该返回-110所以简而言之,所有情况下的长度都应该相同。我做了什么:我已经根据如下所示的要求定义了函数。我需要帮助的地方:我派生了一个函数,但我不确定这是否是正确的方法。当我在Windows端的独立系统上测试它时,exe有时会停止工作,但是当我将此功能包含在Lin

c++ - STL 算法如何独立于 Iterator 类型工作?

STL算法如何独立于迭代器类型工作? 最佳答案 真的,他们只是工作。它们使用模板的一些非常基本的属性,有时称为静态多态性。如果您熟悉该术语,它本质上是一种鸭式输入形式。(如果它长得像鸭子,而且叫起来像鸭子,那一定是鸭子)技巧很简单。这是一个非常简单的例子:templatevoidsay_hello(constT&t){t.hello();}say_hello函数不关心它的参数是哪种类型。它不必从接口(interface)派生或做出任何其他类型的关于它是什么的“promise”。重要的是类型在这种情况下有效。我们对该类型所做的一切就是

c++ - 我可以在 STL 的 map 中使用 vector 吗?

我可以声明这样的map吗map>mymap;我认为它是适用的。然而,它显示不是。我试过了map*>mymap;然后就OK了这是什么规则? 最佳答案 你需要一个额外的空间:map>mymap;^seetheextraspace没有额外的空间,>>被解析为右移运算符。在C++0x中修改了规则,不再需要额外的空间。一些编译器(例如VisualC++2008及更高版本)已经不需要额外的空间。 关于c++-我可以在STL的map中使用vector吗?,我们在StackOverflow上找到一个类似

c++ - STL算法删除容器中的所有对象?

是否有STL实用程序/算法来对所有对象执行delete*the_object_iterator;?这样我就可以安全地clear()了吗?STL容器是一个set,对象是指向使用new创建的C++类的指针。Boost似乎是最好的解决方案。我的目标是避免在不可复制的类上进行复制构造。 最佳答案 使用智能指针来保存类指针std::set>mySet; 关于c++-STL算法删除容器中的所有对象?,我们在StackOverflow上找到一个类似的问题: https://

c++ - 哪一个使用c++ STL容器或MFC容器?

对于每个STL容器,在visualc++中都有一个可用的MFC容器。哪个在什么意义上比另一个更好,你用什么?我一直使用STL容器是不是错了? 最佳答案 由于可移植性,我总是更喜欢STL容器。MFC容器几乎永远不会在Linux上可用。即使您不打算在Linux上使用您的代码...您也永远不知道future会发生什么。 关于c++-哪一个使用c++STL容器或MFC容器?,我们在StackOverflow上找到一个类似的问题: https://stackoverfl

c++ - STL 迭代器 - 目的

STL迭代器的用途是什么?为什么程序员要创造这个概念? 最佳答案 迭代器允许您将算法与容器分开。只要您有开始和结束迭代器,并且知道迭代器的功能(随机访问等),您就可以在迭代器指定的范围内进行操作。例如,参见std::for_each、std::transform。通过这种方式,您可以只实现算法的一个版本,而无需为您希望算法在其上运行的每个容器编写一个新版本。 关于c++-STL迭代器-目的,我们在StackOverflow上找到一个类似的问题: https:/