示例#1
0
int test_iterator_20()
{
	// std::reverse_iterator: 反向迭代器
	std::vector<int> myvector;
	for (int i = 0; i<10; i++) myvector.push_back(i);

	typedef std::vector<int>::iterator iter_type;
							      // ? 0 1 2 3 4 5 6 7 8 9 ?
	iter_type from(myvector.begin());                     //   ^
							      //         ------>
	iter_type until(myvector.end());                      //                       ^
							      //
	std::reverse_iterator<iter_type> rev_until(from);     // ^
							      //         <------
	std::reverse_iterator<iter_type> rev_from(until);     //                     ^

	std::cout << "myvector:";
	while (rev_from != rev_until)
		std::cout << ' ' << *rev_from++; // 9 8 7 6 5 4 3 2 1 0
	std::cout << '\n';

	return 0;
}
示例#2
0
void GameStateManager::cleanup()
{
	//unwind state stack in reverse
	typedef std::vector<State*>::iterator iter_type;
	iter_type from(gameStates.begin());
	iter_type until(gameStates.end());  
	std::reverse_iterator<iter_type> rev_until(from);
	std::reverse_iterator<iter_type> rev_from(until);                    
	while (rev_from != rev_until)
	{
		delete *rev_from++;
	}
	

	for (auto& state : hangingStates)
	{
		delete state;
		state = nullptr;
	}

	//remove all state pointers
	gameStates.clear();
	hangingStates.clear();
}