【问题标题】:STL container equivalent of Delphi set?STL容器相当于Delphi集?
【发布时间】:2015-04-23 16:58:59
【问题描述】:

是否有一个功能类似于 Delphi "set" 的 STL 容器,下面的代码取自 DelphiBasics:

type
    TDigits = set of '1'..'9';       // Set of numeric digit characters
var
    digits : TDigits;                // Set variable
    myChar : char;
begin
    digits := ['2', '4'..'7'];

    // Now we can test to see what we have set on:
    for myChar := '1' to '9' do
        begin
        if (myChar In digits) then
            DoSomething()
        else
            DoSomethingElse();
        end;
end;

【问题讨论】:

  • 投反对票?哇...您至少可以发表评论...我是来学习的。
  • 三票赞成“不清楚你在问什么”。除非选民不知道德尔福——在这种情况下他们如何判断? - 这是一个非常明确的问题,有很好的示例代码演示了您想要等效的类型的用法。奇怪。
  • @DavidM:同意,很奇怪。 SO 总体而言是一个很棒的网站,但我认为对声誉的疯狂追逐可能会使决策制定偏向于规模的快速末端。

标签: c++ delphi stl


【解决方案1】:

与 Delphi 的 set of 最接近的是 <bitset> 标头中的 STL std::bitset 容器。

相似之处:

  • 您可以在开头设置它的范围;
  • std::bitset::set 在 Delphi 中等于 Include();
  • std::bitset::reset 在 Delphi 中等于 Exclude();
  • std::bitset::test() 在 Delphi 中等于 in;
  • 您可以使用按位运算符(|、&、<<、>>、^ 等)。

区别:

  • 在 Delphi 中,set 的最大大小是 256 位,所以如果你想创建一个更大的集合,你必须使用像 array [1..N] of set of byte 这样的东西。在 C++ 中,std::bitset 没有这个限制;
  • 在 Delphi 中,set 位按值包含/排除。在 C++ 中,std::bitset 位按索引设置/重置。

【讨论】:

    猜你喜欢
    • 2011-02-04
    • 2011-02-27
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 2011-09-18
    • 1970-01-01
    • 2014-09-10
    相关资源
    最近更新 更多