# set::difference_type

**Visual Studio 2012**

A signed integer type that can be used to represent the number of elements of a set in a range between elements pointed to by iterators.

typedef typename allocator_type::difference_type difference_type;

The **difference_type** is the type returned when subtracting or incrementing through iterators of the container. The **difference_type** is typically used to represent the number of elements in the range *[_First, _Last)* between the iterators _First and _Last, includes the element pointed to by _First and the range of elements up to, but not including, the element pointed to by _Last.

Note that although **difference_type** is available for all iterators that satisfy the requirements of an input iterator, which includes the class of bidirectional iterators supported by reversible containers such as set, subtraction between iterators is only supported by random-access iterators provided by a random-access container such as vector.

// set_diff_type.cpp // compile with: /EHsc #include <iostream> #include <set> #include <algorithm> int main( ) { using namespace std; set <int> s1; set <int>::iterator s1_Iter, s1_bIter, s1_eIter; s1.insert( 20 ); s1.insert( 10 ); s1.insert( 20 ); // won't insert as set elements are unique s1_bIter = s1.begin( ); s1_eIter = s1.end( ); set <int>::difference_type df_typ5, df_typ10, df_typ20; df_typ5 = count( s1_bIter, s1_eIter, 5 ); df_typ10 = count( s1_bIter, s1_eIter, 10 ); df_typ20 = count( s1_bIter, s1_eIter, 20 ); // the keys, and hence the elements of a set are unique, // so there is at most one of a given value cout << "The number '5' occurs " << df_typ5 << " times in set s1.\n"; cout << "The number '10' occurs " << df_typ10 << " times in set s1.\n"; cout << "The number '20' occurs " << df_typ20 << " times in set s1.\n"; // count the number of elements in a set set <int>::difference_type df_count = 0; s1_Iter = s1.begin( ); while ( s1_Iter != s1_eIter) { df_count++; s1_Iter++; } cout << "The number of elements in the set s1 is: " << df_count << "." << endl; }

The number '5' occurs 0 times in set s1. The number '10' occurs 1 times in set s1. The number '20' occurs 1 times in set s1. The number of elements in the set s1 is: 2.