本文整理汇总了C++中CBitSet::FSubset方法的典型用法代码示例。如果您正苦于以下问题:C++ CBitSet::FSubset方法的具体用法?C++ CBitSet::FSubset怎么用?C++ CBitSet::FSubset使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CBitSet
的用法示例。
在下文中一共展示了CBitSet::FSubset方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CBitSet
//---------------------------------------------------------------------------
// @function:
// CBitSetTest::EresUnittest_SetOps
//
// @doc:
// Test for set operations
//
//---------------------------------------------------------------------------
GPOS_RESULT
CBitSetTest::EresUnittest_SetOps()
{
// create memory pool
CAutoMemoryPool amp;
IMemoryPool *pmp = amp.Pmp();
ULONG cSizeBits = 32;
ULONG cInserts = 10;
CBitSet *pbs1 = GPOS_NEW(pmp) CBitSet(pmp, cSizeBits);
for (ULONG i = 0; i < cInserts; i += 2)
{
pbs1->FExchangeSet(i * cSizeBits);
}
CBitSet *pbs2 = GPOS_NEW(pmp) CBitSet(pmp, cSizeBits);
for (ULONG i = 1; i < cInserts; i += 2)
{
pbs2->FExchangeSet(i * cSizeBits);
}
CBitSet *pbs = GPOS_NEW(pmp) CBitSet(pmp, cSizeBits);
pbs->Union(pbs1);
GPOS_ASSERT(pbs->FEqual(pbs1));
pbs->Intersection(pbs1);
GPOS_ASSERT(pbs->FEqual(pbs1));
GPOS_ASSERT(pbs->FEqual(pbs));
GPOS_ASSERT(pbs1->FEqual(pbs1));
pbs->Union(pbs2);
GPOS_ASSERT(!pbs->FEqual(pbs1) && !pbs->FEqual(pbs2));
GPOS_ASSERT(pbs->FSubset(pbs1) && pbs->FSubset(pbs2));
pbs->Difference(pbs2);
GPOS_ASSERT(pbs->FEqual(pbs1));
pbs1->Release();
pbs->Union(pbs2);
pbs->Intersection(pbs2);
GPOS_ASSERT(pbs->FEqual(pbs2));
GPOS_ASSERT(pbs->FSubset(pbs2));
GPOS_ASSERT(pbs->CElements() == pbs2->CElements());
pbs2->Release();
pbs->Release();
return GPOS_OK;
}
示例2: bsi
//---------------------------------------------------------------------------
// @function:
// CJoinOrderDP::PexprBuildPred
//
// @doc:
// Build predicate connecting the two given sets
//
//---------------------------------------------------------------------------
CExpression *
CJoinOrderDP::PexprBuildPred
(
CBitSet *pbsFst,
CBitSet *pbsSnd
)
{
// collect edges connecting the given sets
CBitSet *pbsEdges = GPOS_NEW(m_pmp) CBitSet(m_pmp);
CBitSet *pbs = GPOS_NEW(m_pmp) CBitSet(m_pmp, *pbsFst);
pbs->Union(pbsSnd);
for (ULONG ul = 0; ul < m_ulEdges; ul++)
{
SEdge *pedge = m_rgpedge[ul];
if (
pbs->FSubset(pedge->m_pbs) &&
!pbsFst->FDisjoint(pedge->m_pbs) &&
!pbsSnd->FDisjoint(pedge->m_pbs)
)
{
#ifdef GPOS_DEBUG
BOOL fSet =
#endif // GPOS_DEBUG
pbsEdges->FExchangeSet(ul);
GPOS_ASSERT(!fSet);
}
}
pbs->Release();
CExpression *pexprPred = NULL;
if (0 < pbsEdges->CElements())
{
DrgPexpr *pdrgpexpr = GPOS_NEW(m_pmp) DrgPexpr(m_pmp);
CBitSetIter bsi(*pbsEdges);
while (bsi.FAdvance())
{
ULONG ul = bsi.UlBit();
SEdge *pedge = m_rgpedge[ul];
pedge->m_pexpr->AddRef();
pdrgpexpr->Append(pedge->m_pexpr);
}
pexprPred = CPredicateUtils::PexprConjunction(m_pmp, pdrgpexpr);
}
pbsEdges->Release();
return pexprPred;
}