Iterator and Algorithm Patterns
Iterator Positions
Iterators can locate a value and turn that position back into an index for reporting.
Iterator Positions
iterator_positions.cpp
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> scores{72, 85, 91, 64};
int target = ;
auto found = std::find(scores.begin(), scores.end(), target);
int position = found == scores.end()
? -1
: static_cast<int>(std::distance(scores.begin(), found));
std::cout << "target=" << target << std::endl;
std::cout << "position=" << position << std::endl;
return 0;
}
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> scores{72, 85, 91, 64};
int target = ;
auto found = std::find(scores.begin(), scores.end(), target);
int position = found == scores.end()
? -1
: static_cast<int>(std::distance(scores.begin(), found));
std::cout << "target=" << target << std::endl;
std::cout << "position=" << position << std::endl;
return 0;
}
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> scores{72, 85, 91, 64};
int target = ;
auto found = std::find(scores.begin(), scores.end(), target);
int position = found == scores.end()
? -1
: static_cast<int>(std::distance(scores.begin(), found));
std::cout << "target=" << target << std::endl;
std::cout << "position=" << position << std::endl;
return 0;
}
iterator
An iterator points at a position inside a container.
distance
Subtracting random-access iterators reports how far apart two positions are.