Шрифт:
v.push_back(new X(1));
v.push_back(new X(4));
vector‹X*›::iterator i;
cout ‹‹ "Initial contents:" ‹‹ endl;
for (i = v.begin; i!= v.end; i++) cout ‹‹ " " ‹‹ *(*i) ‹‹ endl;
release(v.begin); // Delete the first heap-based object.
v.erase(v.begin); // Erase the first element.
cout ‹‹ "Remaining contents:" ‹‹ endl;
for (i = v.begin; i != v.end; i++) cout ‹‹ " " ‹‹ *(*i) ‹‹ endl;
release(v.begin, v.end); // Delete remaining heap-based objects.
v.erase(v.begin, v.end); // Erase remaining elements.
return 0;
}
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;