本文整理汇总了C++中Hash::insertEntry方法的典型用法代码示例。如果您正苦于以下问题:C++ Hash::insertEntry方法的具体用法?C++ Hash::insertEntry怎么用?C++ Hash::insertEntry使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Hash
的用法示例。
在下文中一共展示了Hash::insertEntry方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: possibleStates
/*
* @method
* void Board::possibleStates(vector<Board> states)
* - populates a vector<Board> with all possible neighbors of the board's current state
* Author: Mark Sands
* Date modified: 2-1-11
*/
void Board::possibleStates(std::vector<Board>& states)
{
states.clear();
u_int32 maxJumps = 4;
/** One Tile Moves **/
if ( validMoveToPosition(MOVES[NORTH], NORTH) ) {
maxJumps--;
Board temp = swap(emptySlotIndex, emptySlotIndex.movePositionTo(MOVES[NORTH]));
if ( !hash.isThere(temp.chargrid) ) {
std::auto_ptr<Board> node(new Board(*this));
temp.parent_ = node.release();
// heuristic
temp.distance(emptySlotIndex);
temp.numberOfWrongTokens();
hash.insertEntry(temp.chargrid);
states.push_back(temp);
}
}
if ( maxJumps == 0 ) return;
if ( validMoveToPosition(MOVES[EAST], EAST) ) {
maxJumps--;
Board temp = swap(emptySlotIndex, emptySlotIndex.movePositionTo(MOVES[EAST]));
if ( !hash.isThere(temp.chargrid) ) {
std::auto_ptr<Board> node(new Board(*this));
temp.parent_ = node.release();
// heuristic
temp.distance(emptySlotIndex);
temp.numberOfWrongTokens();
hash.insertEntry(temp.chargrid);
states.push_back(temp);
}
}
if ( maxJumps == 0 ) return;
if ( validMoveToPosition(MOVES[SOUTH], SOUTH) ) {
maxJumps--;
Board temp = swap(emptySlotIndex, emptySlotIndex.movePositionTo(MOVES[SOUTH]));
if ( !hash.isThere(temp.chargrid) ) {
std::auto_ptr<Board> node(new Board(*this));
temp.parent_ = node.release();
// heuristic
temp.distance(emptySlotIndex);
temp.numberOfWrongTokens();
hash.insertEntry(temp.chargrid);
states.push_back(temp);
}
}
if ( maxJumps == 0 ) return;
if ( validMoveToPosition(MOVES[WEST], WEST) ) {
maxJumps--;
Board temp = swap(emptySlotIndex, emptySlotIndex.movePositionTo(MOVES[WEST]));
if ( !hash.isThere(temp.chargrid) ) {
std::auto_ptr<Board> node(new Board(*this));
temp.parent_ = node.release();
// heuristic
temp.distance(emptySlotIndex);
temp.numberOfWrongTokens();
hash.insertEntry(temp.chargrid);
states.push_back(temp);
}
}
/** Two Tile Moves **/
if ( maxJumps == 0 ) return;
if ( validJumpToPosition(JUMPS[NORTH], NORTH) ) {
maxJumps--;
Board temp = swap(emptySlotIndex, emptySlotIndex.movePositionTo(JUMPS[NORTH]));
if ( !hash.isThere(temp.chargrid) ) {
std::auto_ptr<Board> node(new Board(*this));
temp.parent_ = node.release();
// heuristic
temp.distance(emptySlotIndex);
temp.numberOfWrongTokens();
hash.insertEntry(temp.chargrid);
states.push_back(temp);
}
}
if ( maxJumps == 0 ) return;
if ( validJumpToPosition(JUMPS[EAST], EAST) ) {
maxJumps--;
Board temp = swap(emptySlotIndex, emptySlotIndex.movePositionTo(JUMPS[EAST]));
if ( !hash.isThere(temp.chargrid) ) {
std::auto_ptr<Board> node(new Board(*this));
temp.parent_ = node.release();
// heuristic
temp.distance(emptySlotIndex);
//.........这里部分代码省略.........