Можно ли использовать итератор набора для нахождения разницы между двумя последовательными элементами набора в c ++?
Да.
for( itr = sett.begin();itr!=sett.end();itr++){
// ^^^^^
if(itr!=sett.end()){
cout << (*itr++)-(*itr) << " difference"<< endl ;
// ^^^^^
Проблема в том, что вы увеличиваете итератор в два раза, поэтому пропускаете элементы. Более того, в случае, когда итератор выполняет обработку последнего элемента, вы в конечном итоге выполняете косвенную передачу через итератор за последним элементом (т.е. конечным итератором).
На самом деле для этого существует стандартный алгоритм. Его имя обычно считается запутанным, но в данном случае это вполне уместно. Встречайте std::adjacent_difference
:
std::adjacent_difference(std::begin(sett), std::end(sett),
std::ostream_iterator<int>(std::cout, " difference\n"));