map1.cpp
#include ‹iostream.h›
#include ‹stl.h›
int main() {
typedef map‹char, int, less‹char› › maptype;
maptype m;
// Store mappings between roman numerals and decimals.
m['l'] = 50;
m['x'] = 20; // Deliberate mistake.
m['v'] = 5;
m['i'] = 1;
cout ‹‹ 'm['x'] = ' ‹‹ m['x'] ‹‹ endl;
m['x'] = 10; // Correct mistake.
cout ‹‹ 'm['x'] = ' ‹‹ m['x'] ‹‹ endl;
cout ‹‹ 'm['z'] = ' ‹‹ m['z'] ‹‹ endl; // Note default value is added.
cout ‹‹ 'm.count('z') = ' ‹‹ m.count('z') ‹‹ endl;
pair‹maptype::iterator, bool› p;
p = m.insert(pair‹const char, int›('c', 100));
if (p.second) cout ‹‹ 'First insertion successful' ‹‹ endl;
p = m.insert(pair‹const char, int› ('c', 100));
if (p.second) cout ‹‹ 'Second insertion successful' ‹‹ endl;
else cout ‹‹ 'Existing pair ' ‹‹ (*(p.first)).first ‹‹ ' -› ' ‹‹ (*(p.first)).second ‹‹ endl;
return 0;
}
mismtch2.cpp
#include ‹stl.h›
#include ‹iostream.h›
#include ‹string.h›
bool str_equal(const char* a_, const char* b_) {
return ::strcmp(a_, b_) == 0 ? 1: 0;
}
const unsigned size = 5;
char* n1[size] = {'Brett', 'Graham', 'Jack', 'Mike', 'Todd'};
int main() {
char* n2[size];
copy(n1, n1 + 5, n2);
pair‹char**, char**› result;
result = mismatch(n1, n1+ size, n2, str_equal);
if (result.first == n1 + size && result.second == n2 + size)
cout ‹‹ 'n1 and n2 are the same' ‹‹ endl;
else cout ‹‹ 'mismatch at index: ' ‹‹ (result.first - n1) ‹‹ endl;
n2[2] = 'QED';
result = mismatch(n1, n1 + size, n2, str_equal);
if (result.first == n2 + size && result.second == n2 + size)
cout ‹‹ 'n1 and n2 are the same' ‹‹ endl;
else cout ‹‹ 'mismatch at index: ' ‹‹ (result.first - n1) ‹‹ endl;
return 0;
}
mismtch1.cpp
#include ‹stl.h›
#include ‹iostream.h›
int main() {
typedef vector‹int› IntVec;
IntVec v1(10);
IntVec v2(v1.size());
iota(v1.begin(), v1.end(), 0);
iota(v2.begin(), v2.end(), 0);
pair ‹IntVec::iterator, IntVec::iterator› result;
result = mismatch(v1.begin(), v1.end(), v2.begin());
if (result.first = v1.end() && result.second == v2.end())
cout ‹‹ 'v1 and v2 are the same' ‹‹ endl;
else cout ‹‹ 'mismatch at index: ' ‹‹ (result.first - v1.begin()) ‹‹ endl;
v2[v2.size()/2] = 42;
result = mismatch(v1.begin(), v1.end(), v2.begin());
if (result.first == v1.end() && result.second == v2.end())
cout ‹‹ 'v1 and v2 are the same' ‹‹ endl;
else cout ‹‹ 'mismatch at index: ' ‹‹ (result.first - v1.begin()) ‹‹ endl;
return 0;
}
mmap2.cpp
#include ‹iostream.h›
#include ‹stl.h›
typedef multimap‹int, char, less‹int› › mmap;
typedef pair‹const int, char› pair_type;
pair_type p1(3, 'c');
pair_type p2(6, 'f');