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


C++ ConditionList::evalOnTuple方法代码示例

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


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

示例1: selection

// Return a relation of tuples that satisfy the conditions. The new relation 
// is stored in the result data member.
Relation Database::selection( vector<Condition> conditions,
	Relation* targetRelation ) {

	result.clear( );

	// Set up the list of conditions.
	ConditionList cl = ConditionList( conditions, targetRelation );

	// Find the tuples in the relation that satisfy the conditions and add
	// them to the new relation.
	for ( int i = 0; i < targetRelation->getNumTuples( ); i++ ){
		if ( cl.evalOnTuple( i ) ){

			vector<Entry*> newRow;

			// Find the columns that satify the conditions and create
			// a tuple out of them
			for ( int j = 0; j < targetRelation->attributeSize( ); j++ ){

				newRow.push_back( new Entry( *targetRelation->getRow( i ).at( j ) ) );

			}

			// Add the newly created tuple to the new relation.
			result.addRow( newRow );
		}

	}

	result.setAttributes( targetRelation->getAttributes( ) );

	result.setKeys( targetRelation->getKeys() );

	return result;
}
开发者ID:njchristian,项目名称:315_RDBMS,代码行数:37,代码来源:Database.cpp

示例2: update

// Updates all of the entries in a relation that meet the specified condition
Relation* Database::update( string relationName, vector<string> attributeNames,
	vector<Entry> newVals, vector<Condition> conditions ) {

	Relation* targetRelation = findRelation( relationName );

	vector<string> targetAttNames = targetRelation->getAttributeNames( );

	vector<int> targetIndeces;

	for ( unsigned i = 0; i < attributeNames.size( ); i++ ){

		for ( unsigned j = 0; j < targetAttNames.size( ); j++ ){

			if ( attributeNames.at( i ) == targetAttNames.at( j ) ){
				targetIndeces.push_back( j );
			}

		}

	}

	ConditionList cl = ConditionList( conditions, targetRelation );

	for ( int i = 0; i < targetRelation->getNumTuples( ); i++ ){

		if ( cl.evalOnTuple( i ) ){

			vector<Entry*> targetRow = targetRelation->getRow( i );

			for ( unsigned j = 0; j < targetIndeces.size( ); j++ ){

				delete targetRow.at( targetIndeces.at( j ) );
				targetRow.at( targetIndeces.at( j ) ) = new Entry( newVals.at( j ) );

			}

			targetRelation->updateRow( targetRow, i );

		}

	}

	return targetRelation;
}
开发者ID:njchristian,项目名称:315_RDBMS,代码行数:45,代码来源:Database.cpp

示例3: deleteFromRelation

// Delete from a relation based on the specified conditions
Relation Database::deleteFromRelation( Relation* targetRelation, vector<Condition> conditions ){

	ConditionList cl = ConditionList( conditions, targetRelation );

	//WE CANT DELETE THESE RIGHT AWAY OR ELSE WE MESS UP OUR DATA STRUCTURES
	vector<int> toBeDeleted;

	for ( int i = 0; i < targetRelation->getNumTuples( ); ++i ){

		if ( cl.evalOnTuple( i ) ){
			toBeDeleted.push_back( i );
		}

	}

	for ( unsigned i = 0; i < toBeDeleted.size( ); i++ ){

		//the index decreases as we delete rows
		targetRelation->deleteRow( toBeDeleted.at( i ) - i );

	}

	return targetRelation;
}
开发者ID:njchristian,项目名称:315_RDBMS,代码行数:25,代码来源:Database.cpp


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