本文整理汇总了C++中THashSet::insert方法的典型用法代码示例。如果您正苦于以下问题:C++ THashSet::insert方法的具体用法?C++ THashSet::insert怎么用?C++ THashSet::insert使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类THashSet
的用法示例。
在下文中一共展示了THashSet::insert方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: AddTreeCtrs
static void AddTreeCtrs(const TTrainData& data,
const TSplitTree& currentTree,
TFold* fold,
TLearnContext* ctx,
TStatsFromPrevTree* statsFromPrevTree,
TCandidateList* candList) {
using TSeenProjHash = THashSet<TProjection>;
TSeenProjHash seenProj;
// greedy construction
TProjection binAndOneHotFeaturesTree;
binAndOneHotFeaturesTree.BinFeatures = currentTree.GetBinFeatures();
binAndOneHotFeaturesTree.OneHotFeatures = currentTree.GetOneHotFeatures();
seenProj.insert(binAndOneHotFeaturesTree);
for (const auto& ctrSplit : currentTree.GetCtrSplits()) {
seenProj.insert(ctrSplit.Projection);
}
TSeenProjHash addedProjHash;
for (const auto& baseProj : seenProj) {
if (baseProj.IsEmpty()) {
continue;
}
for (int cf = 0; cf < data.AllFeatures.CatFeatures.ysize(); ++cf) {
if (data.AllFeatures.CatFeatures[cf].empty() ||
data.AllFeatures.IsOneHot[cf] ||
ctx->Rand.GenRandReal1() > ctx->Params.ObliviousTreeOptions->Rsm) {
continue;
}
TProjection proj = baseProj;
proj.AddCatFeature(cf);
if (proj.IsRedundant() || proj.GetFullProjectionLength() > ctx->Params.CatFeatureParams->MaxTensorComplexity) {
continue;
}
if (addedProjHash.has(proj)) {
continue;
}
addedProjHash.insert(proj);
AddCtrsToCandList(*fold, *ctx, proj, candList);
fold->GetCtrRef(proj);
}
}
THashSet<TSplitCandidate> candidatesToErase;
for (auto& splitCandidate : statsFromPrevTree->Stats) {
if (splitCandidate.first.Type == ESplitType::OnlineCtr) {
if (!addedProjHash.has(splitCandidate.first.Ctr.Projection)) {
candidatesToErase.insert(splitCandidate.first);
}
}
}
for (const auto& splitCandidate : candidatesToErase) {
statsFromPrevTree->Stats.erase(splitCandidate);
}
}