我正在迭代 boost::tuples 的向量以找到一个元素。但是,我还想找到该元素在向量中的确切位置,以便稍后将其删除。这是代码,但是 std::distance 没有给我正确的值。
int Controller::isValid(int Id, int& pos) {
pos = 0;
for( std::vector< boost::tuple<int,std::string, std::string, std::string> >::const_iterator it = games.begin(); it != games.end(); it++) {
if( boost::get<0>(*it) == Id) {
pos = std::distance< std::vector< boost::tuple<int,std::string, std::string, std::string> >::const_iterator >( games.begin(), it ) ;
return 0;
}
}
例如对于大小等于 5 的向量,std::distance 是 8!
为什么?我的代码中的错误在哪里?