是否有功能类似于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;
最佳答案
最接近 Delphi 的 set of
是 STL std::bitset
<bitset>
中的容器 header 。
相似点:
- 您可以在开始时设置它的范围;
-
std::bitset::set
等于Include()
在德尔福; -
std::bitset::reset
等于Exclude()
在德尔福; -
std::bitset::test()
等于in
在德尔福; - 您可以使用按位运算符(
|
、&
、<<
、>>
、^
等)。
区别:
- 在 Delphi 中,a 的最大大小
set
是 256 位,所以如果你想创建一个更大的集合,你必须使用类似array [1..N] of set of byte
的东西.在 C++ 中,std::bitset
没有那个限制; - 在德尔福中,
set
位按值包含/排除。在 C++ 中,std::bitset
位由索引设置/重置。
关于c++ - STL容器相当于Delphi集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29829961/