我需要在c ++中使用像“in”这样的delphi集合的优点,但我不知道c ++中是否存在类似于set的数据结构
我知道我可能会使用数组,但正如我所说,我想使用像“in”这样的集合优势,那么是否有像c ++中的集合那样的内置数据结构?
如果是,请解释如何使用它,我仍然是c ++的首发
如果不是,有没有办法表示它(exept数组,因为我知道它。)
提前感谢:)
答案 0 :(得分:10)
有一个名为std::set
的标准库容器......我不知道delphi,但是使用find
可以实现set 操作中的简单元素方法并将结果与end
进行比较:
std::set<int> s;
s.insert( 5 );
if ( s.find( 5 ) != s.end() ) {
// 5 is in the set
}
其他操作可能会作为标准库中的算法实现(std::union
,std::difference
...)
答案 1 :(得分:3)
使用std::set
。请参阅http://www.cplusplus.com以供参考。
答案 2 :(得分:2)
在C ++中,没有任何类似的集成。根据您的需要,您可能希望使用位标志和按位操作或std::bitset标准容器(当然除了std :: set之外)。如果您正在使用C ++ Builder,那么还有一个模拟Delphi集的类 - 搜索类似BaseSet或SetBase等类似的System.hpp - 我不记得确切的名称。
答案 3 :(得分:0)
是的,在p上描述了一个C ++ STL set
容器类。 Stroustrup的TC ++ PL(Special Ed。)491。
答案 4 :(得分:0)
STL算法具有以下内容 From MSDN
<强> set_difference 强> 将属于一个已排序源范围但不属于第二个已排序源范围的所有元素统一到单个排序目标范围中,其中排序条件可由二元谓词指定。
<强> set_intersection 强> 将属于两个已排序源范围的所有元素合并为单个排序目标范围,其中排序标准可由二元谓词指定。
<强> set_symmetric_difference 强> 将属于排序源范围中的一个但不是两个的所有元素统一到单个排序目标范围中,其中排序标准可以由二元谓词指定。
<强> set_union 强> 将属于两个已排序源范围中的至少一个的所有元素合并为单个排序目标范围,其中排序标准可由二元谓词指定。