当前位置: 首页>>代码示例>>C++>>正文


C++ rule::erase方法代码示例

本文整理汇总了C++中rule::erase方法的典型用法代码示例。如果您正苦于以下问题:C++ rule::erase方法的具体用法?C++ rule::erase怎么用?C++ rule::erase使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在rule的用法示例。


在下文中一共展示了rule::erase方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: decompose

// decomposes a rule (A -> B C D E ...) into the rules (A -> B#C#D E), (B#C#D -> B#C D), (B#C -> B C), ... respectively.
// might expand 'nonterminals'
// might rewrite 'rule_to_decompose'
void decompose(rule &rule_to_decompose, set<string> &nonterminals, rules &decomposed_rules) {
	string temp;
	if (rule_to_decompose.size() == 2) {
		if (is_in(rule_to_decompose[1], nonterminals)) {
			cerr << " ERROR : irregular occurence of chain rule (i.e. A -> B)! - ignored " << '\n';
			return;
		} else
			decomposed_rules.insert(rule_to_decompose);
	} else {
		for (size_t i = 1; i<rule_to_decompose.size();++i)
			if (!is_in(rule_to_decompose[i], nonterminals)) {
				temp = "#" + rule_to_decompose[i];
				nonterminals.insert(temp);
				decomposed_rules.insert(rule{ temp, rule_to_decompose[i] });
				replace(rule_to_decompose.begin() + i, rule_to_decompose.end(), rule_to_decompose[i], temp);
			}
		while(rule_to_decompose.size() > 3) {
			temp = rule_to_decompose[1] + "#" + rule_to_decompose[2];
			nonterminals.insert(temp);
			decomposed_rules.insert(rule{ temp, rule_to_decompose[1], rule_to_decompose[2] });
			rule_to_decompose[1] = temp;
			rule_to_decompose.erase(rule_to_decompose.begin() + 2);
		}
		decomposed_rules.insert(rule_to_decompose);
	}
}
开发者ID:mathlizard,项目名称:CYK,代码行数:29,代码来源:CYK.cpp


注:本文中的rule::erase方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。