草庐IT

stl-algorithm

全部标签

c++ - 在 dll 接口(interface)中使用 STL 类时消除 C4251 警告的一种方法

在dll接口(interface)中使用STL类作为Commonpracticeindealingwithwarningc4251:class…needstohavedll-interface不是一个好习惯。解释。举个例子:#include#include#includeclass__declspec(dllexport)HelloWorld{public:HelloWorld(){abc.resize(5);for(inti=0;iabc;std::stringstr;};编译此文件时,可以观察到以下警告:warningC4251:'HelloWorld::str':class'st

c++ - 在 dll 接口(interface)中使用 STL 类时消除 C4251 警告的一种方法

在dll接口(interface)中使用STL类作为Commonpracticeindealingwithwarningc4251:class…needstohavedll-interface不是一个好习惯。解释。举个例子:#include#include#includeclass__declspec(dllexport)HelloWorld{public:HelloWorld(){abc.resize(5);for(inti=0;iabc;std::stringstr;};编译此文件时,可以观察到以下警告:warningC4251:'HelloWorld::str':class'st

C++:替代 STL 和 Boost?

C++是一种多范式语言,STL和Boost是针对功能构建的语言范式。STL由容器(保存数据)、迭代器(访问数据)和算法(操作数据的函数)组成。算法函数通过使用迭代器应用于容器。作为副作用,这些方法不是容器类的一部分,而是完全独立的。(这避免了库编写者的冗余,但对库用户来说很痛苦。)是否有C++替代STL/Boost以更传统的面向对象风格提供此类容器?我正在寻找字符串、vector、链表、map、树、哈希表等。容器应该易于继承和扩展。相比之下,从STL/Boost扩展类是verybadidea这是他们设计师的设计。PS:请不要使用下面的回复空间来夸大STL/Boost的优势。我很了解他们

C++:替代 STL 和 Boost?

C++是一种多范式语言,STL和Boost是针对功能构建的语言范式。STL由容器(保存数据)、迭代器(访问数据)和算法(操作数据的函数)组成。算法函数通过使用迭代器应用于容器。作为副作用,这些方法不是容器类的一部分,而是完全独立的。(这避免了库编写者的冗余,但对库用户来说很痛苦。)是否有C++替代STL/Boost以更传统的面向对象风格提供此类容器?我正在寻找字符串、vector、链表、map、树、哈希表等。容器应该易于继承和扩展。相比之下,从STL/Boost扩展类是verybadidea这是他们设计师的设计。PS:请不要使用下面的回复空间来夸大STL/Boost的优势。我很了解他们

c++ - std::merge 和 std::inplace_merge 之间的区别?

std::merge和std::inplace_merge在复杂度和结果方面有什么区别?不同的?(我不是以英语为母语的人,我不确定是否清楚地理解“就地”是什么意思) 最佳答案 查看std::merge的引用资料和std::inplace_merge您会看到以下复杂性:对于std::merge:Atmoststd::distance(first1,last1)+std::distance(first2,last2)-1comparisons.对于std::inplace_merge:ExactlyN-1comparisonsifeno

c++ - std::merge 和 std::inplace_merge 之间的区别?

std::merge和std::inplace_merge在复杂度和结果方面有什么区别?不同的?(我不是以英语为母语的人,我不确定是否清楚地理解“就地”是什么意思) 最佳答案 查看std::merge的引用资料和std::inplace_merge您会看到以下复杂性:对于std::merge:Atmoststd::distance(first1,last1)+std::distance(first2,last2)-1comparisons.对于std::inplace_merge:ExactlyN-1comparisonsifeno

C++ STL 堆栈问题 : Why does pop() not throw an exception if the stack is empty?

如果堆栈为空且没有可弹出的内容,为什么std::stack::pop()不抛出异常?(我正在为我自己的代码设计一个专门的堆栈,并且想知道这种方法(需要手动检查堆栈是否为空)与抛出异常之间的权衡。我的猜测是,尽管C++支持异常处理,但它的运行时开销很小,因此,为了获得最佳性能,决定不在std::stack::pop中抛出异常)。 最佳答案 我认为pop()不必抛出异常的原因与效率或性能无关,而是与异常有关。正如所争论的elsewhere:SGIexplanation:http://www.sgi.com/tech/stl/stack.

C++ STL 堆栈问题 : Why does pop() not throw an exception if the stack is empty?

如果堆栈为空且没有可弹出的内容,为什么std::stack::pop()不抛出异常?(我正在为我自己的代码设计一个专门的堆栈,并且想知道这种方法(需要手动检查堆栈是否为空)与抛出异常之间的权衡。我的猜测是,尽管C++支持异常处理,但它的运行时开销很小,因此,为了获得最佳性能,决定不在std::stack::pop中抛出异常)。 最佳答案 我认为pop()不必抛出异常的原因与效率或性能无关,而是与异常有关。正如所争论的elsewhere:SGIexplanation:http://www.sgi.com/tech/stl/stack.

c++ - 指向 STL 容器元素的指针

给定一个非连续的STL容器(您也可以考虑boost::unordered_map和boost::multi_index_container),如果没有元素被删除,是否保证容器内元素的内存地址永远不会改变,(但可以添加新的)?例如classABC{};////...//std::listabclist;ABCabc;abclist.insert(abc);ABC*abc_ptr=&(*abclist.begin());换句话说将abc_ptr指向abc在整个执行过程中,如果我不删除abc来自abc_list.我问这个是因为我要包装类ABC在C++/Cli中,所以我需要指向ABC的指针包装

c++ - 指向 STL 容器元素的指针

给定一个非连续的STL容器(您也可以考虑boost::unordered_map和boost::multi_index_container),如果没有元素被删除,是否保证容器内元素的内存地址永远不会改变,(但可以添加新的)?例如classABC{};////...//std::listabclist;ABCabc;abclist.insert(abc);ABC*abc_ptr=&(*abclist.begin());换句话说将abc_ptr指向abc在整个执行过程中,如果我不删除abc来自abc_list.我问这个是因为我要包装类ABC在C++/Cli中,所以我需要指向ABC的指针包装