本文整理汇总了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;
}
示例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;
}
示例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;
}