Hi,
I read in a book that set and map (defined in STL) elements are stored in sorted order.
Given below is a program is an attempt to test the above, but however the memory allocation of the elements seem to be in the order in which the elements are inserted.
1) Am I missing something in my program ?
2) Does the memory allocation of the elements not depend at all on the key value ?
OS - Mac OS X 10.6
Compiler - gcc version 4.2.1 (Apple Inc. build 5646)
code output:Code:#include <iostream> #include <string> #include <map> #include <set> using std :: cout; using std :: endl; using std :: set; using std :: map; using std :: string; int main() { system("clear"); //SET set<int> s1; s1.insert(20); s1.insert(15); s1.insert(17); s1.insert(12); s1.insert(25); cout << endl << "Key\tAddress\n" << "---\t-------\n"; for(set<int> :: const_iterator itr = s1.begin(); itr != s1.end(); itr ++) cout << *itr << "\t" << &(*itr) << endl; //MAP map<int, string> m1; m1[4] = "aaaa"; m1[1] = "bbbb"; m1[3] = "cccc"; m1[2] = "dddd"; cout << endl << "Key\tElement\tAddress1\tAddress2\n" << "---\t-------\t--------\t--------\n"; for(map<int, string> :: const_iterator itr = m1.begin(); itr != m1.end(); itr ++) cout << itr -> first << '\t' << itr -> second << '\t' << &(itr -> first) << '\t' << &(m1[itr -> first]) << endl; return(0); }
Code:Key Address --- ------- 12 0x100100130 15 0x1001000d0 17 0x100100100 20 0x1001000a0 25 0x100100160 Key Element Address1 Address2 --- ------- -------- -------- 1 bbbb 0x1001001e0 0x1001001e8 2 dddd 0x100100280 0x100100288 3 cccc 0x100100230 0x100100238 4 aaaa 0x100100190 0x100100198




Reply With Quote