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


C++ Operand::getAttributeIndex方法代码示例

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


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

示例1: count

int Olap::count(Query* query,WrapDataSource* dataExtractor)//remove 2nd para later
{

	//DataExtraction dataExtractor;
	//bitstring bitstring1,bitstring2;BitStreamInfo*
	//bitstring result;
	BitStreamInfo* bitstring1;
	BitStreamInfo* bitstring2;
	BitStreamInfo* result;
	Expression* postfixExpression = query->getPostfixExpression();
	stack<Symbol*> operandStack;

	for (int i=0;i<postfixExpression->count();i++)
	{

		Symbol* inputSymbol = postfixExpression->getSymbolAt(i);

		if(inputSymbol->getType()==TYPEOPERAND||inputSymbol->getType()==TYPENOT)
		{
			operandStack.push(inputSymbol);
		}
		else
		{
			if (!operandStack.empty())
			{
				Operand* operand2 = dynamic_cast<Operand*>(operandStack.top());
				operandStack.pop();
				bitstring2 = dataExtractor->getBitString(operand2->getAttributeIndex(),operand2->getbitStringIndex());
				if (!operandStack.empty())
				{
					Symbol* possibleNot = operandStack.top();
					if (possibleNot->getType()==TYPENOT)
					{
						operandStack.pop();
						bitstring2=~(*bitstring2);
					}
				}
				if (!operandStack.empty())
				{
					Operand* operand1 = dynamic_cast<Operand*>(operandStack.top());
					operandStack.pop();
					bitstring1 = dataExtractor->getBitString(operand1->getAttributeIndex(),operand1->getbitStringIndex());
					if (!operandStack.empty())
					{
						Symbol* possibleNot = operandStack.top();
						if (possibleNot->getType()==TYPENOT)
						{
							operandStack.pop();
							bitstring1=~(*bitstring1);
						}
					}
				}
			}
			if (inputSymbol->getType()==TYPEAND)
			{
				result=(*bitstring1)&(*bitstring2);
			}
			else if (inputSymbol->getType()==TYPEOR)
			{
				result=(*bitstring1)|(*bitstring2);
			}
		}
	}
	while(!operandStack.empty())
	{
		Operand* operand = dynamic_cast<Operand*>(operandStack.top());
		operandStack.pop();
		result = dataExtractor->getBitString(operand->getAttributeIndex(),operand->getbitStringIndex());
		if (!operandStack.empty())
		{
			Symbol* possibleNot = operandStack.top();
			if (possibleNot->getType()==TYPENOT)
			{
				operandStack.pop();
				result=~(*result);
			}
		}
	}
	return result->count();
}
开发者ID:asankaf,项目名称:scalable-data-mining-framework,代码行数:80,代码来源:Olap.cpp


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