Partial list of containers in the STL:
All containers support:
interator begin(); const_iterator begin() const; iterator end(); const_iterator end() const;
input iterator
output iterator
forward iterator
bidirectional iterator
random-access iterator
list<double> L;
L.push_back(1.2);
L.push_front(3.4);
L.insert(L.begin(), 5.6);
L.insert(L.end(), 7.8);
list<double>::const_iterator iter;
for (iter = L.begin(); iter != L.end(); ++iter)
cout << *iter << " ";
cout << endl;
Input Iterator
Forward/Input/Output Iterator
Bidirectional Iterator
Random-acces Iterator
class IsPositive {
public:
bool operator() (int n) const {
return n > 0;
}
};
IsPositive test;
int x;
cout << "Enter an integer: ";
cin >> x;
if (test(x))
cout << x << " is positive" << endl;
else
cout << x << " is not positive" << endl;
Need to #include <algorithm>
Useful functions:
void sort( RandomAccessIterator begin, RandomAccessIterator end ); void stable_sort( RandomAccessIterator begin, RandomAccessIterator end );
Example:
// assume the print function has already been defined vector<int> V; V.push_back(4); V.push_back(8); V.insert(V.begin(), 12); V.insert(V.end(), 6); print(V); // prints: 12 4 8 6 sort(V.begin(), V.end()); print(V); // prints: 4 6 8 12
Useful functions:
InputIterator find( InputIterator begin, InputIterator end,
const EqualityComparable & x );
InputIterator find_if( InputIterator begin, InputIterator end,
Predicate pred );
Example:
vector<int>::iterator found, found1, found2, found3;
found = find(V.begin(), V.end(), 0);
if (found != V.end())
cout << *found << endl;
found1 = find_if(V.begin(), V.end(), IsPositive());
if (found1 == V.end())
cout << "no positive items" << endl;
else {
cout << *found1 << endl;
found2 = find_if(++found1, V.end(), IsPositive());
if (found2 == V.end())
cout << "no more positive items" << endl;
else {
cout << *found2 << endl;
found3 = find_if(++found2, V.end(), IsPositive());
if (found3 == V.end())
cout << " no more positive items" << endl;
else
cout << *found3 << endl;
}
}