<vector>
:
a container, not a math-vector $\ \vec x$
<deque>
:
a vector which is dynamic both at end and start <list>
:
for constant time insertion, for- and backward iteration <stack>
:
LIFO (last-in first-out)
<queue>
:
FIFO (first-in first-out)
<queue>
priority_queue :
first element is always the largest element <set>
:
ordered sets <multiset>
:
like set, multiple copies however allowed <map>
:
stores data as map: key $\to$ value .begin()
and .end()
facilitating iteration
#include <iostream> #include <stdio.h> #include <vector> #define VARIABLE_NAME(x) #x using namespace std; int main() { vector<int> intVec_1(7,77); // create and initialize a vector of length 7 vector<int> intVec_2; // empty intVec_1.at(5) = 55; // change element intVec_1.reserve(9); // reserve memory // intVec_2 = intVec_1; // the assignment operator = has been overwritten intVec_2.resize(3); // change size intVec_2.at(1) = 11; // change element intVec_2[2] = 22; // the [] operator has been overwritten intVec_2.push_back(44); // increase size and add an element // // change vector size while iterating // vector<int>::iterator it; // iterator in the namespace vector<int> it = intVec_1.begin(); // start iteration at the begining while (it != intVec_1.end()) if (*it==55) // "it" is a pointer intVec_1.erase(it); // element gone --> "it" points already to next element else it++; // pointer arithmetic encapsulated in interator class // // === vector output // printf("%8s |"," "); printf("%4s |","(s)"); printf("%4s |","(c)"); for (int index=0; index<intVec_1.size(); ++index) printf("%4d",index); printf("\n"); // printf("%8s |",VARIABLE_NAME(intVec_1)); printf("%4i |",(int)intVec_1.size()); // the actual number of elements printf("%4i |",(int)intVec_1.capacity()); // total space reserved for (int index=0; index<intVec_1.size(); ++index) printf("%4d",intVec_1[index]); printf("\n"); // printf("%8s |",VARIABLE_NAME(intVec_2)); printf("%4i |",(int)intVec_2.size()); printf("%4i |",(int)intVec_2.capacity()); for (int index=0; index<intVec_2.size(); ++index) printf("%4d",intVec_2[index]); printf("\n"); // return 1; }
#include <iostream> // std IO #include <stdio.h> // printf, sprintf #include <map> // associative maps #define VARIABLE_NAME(x) #x using namespace std; int main() { map<string,double> mapOfWords; // maping strings to double mapOfWords.insert(make_pair("earth", 6378.0)); // typical C++: many ways mapOfWords.insert(pair<string,double>("moon", 1738.0)); // to do the same stuff mapOfWords["sun"] = 695000.0; // standard way of inserting mapOfWords["earth"] = 6378.01; // and overwriting // if (mapOfWords.find("venus") == mapOfWords.end()) // searching for a key mapOfWords["venus"] = 6052.0; // // === erasing // printf("\n"); if (mapOfWords.erase("venus")) // can only erase if existed printf("\"venus\" found in %s and erased\n",VARIABLE_NAME(mapOfWords)); else printf("\"venus\" not found in %s and not erased\n",VARIABLE_NAME(mapOfWords)); // // === iterating through the map // printf("\n"); map<string, double>::iterator it = mapOfWords.begin(); // instantiate and initialize iterator while (it != mapOfWords.end()) { char buffer[50]; // formatting before sending to standard output stream int n = sprintf(buffer,"%s[\"%s\"] = ",VARIABLE_NAME(mapOfWords), (it->first).c_str()); // access key (first) printf("%25s%9.2f\n",buffer,it->second); // access value (second) it++; } // // === stuff // int beforeSize = mapOfWords.size(); mapOfWords.clear(); int afterSize = mapOfWords.size(); // string trueFalse = (mapOfWords.empty()) ? "true" : "false"; printf("\n"); printf("before/after size, empty: %i %i %s\n",beforeSize,afterSize,trueFalse.c_str()); return 1; }
for (string planet : allPlanets) {..}
# list of planet properties by E.T. Skywatcher # actually from http://www.astronomynotes.com/solarsys/plantbla.htm # # planet mass (relative to earth) # diameter (km) # density g/cm3 # oblateness [=(De-Dp)/De] # rotation [h or d] # distance (A.U.) # revolution [d or y] # eccentricity # inclination [deg] # axis tilt [deg] # # string double double double double double char double double char double double double Mercury 0.0553 4880 5.43 0.000 58.81 d 0.387 87.97 d 0.2056 7.0 0.1 Venus 0.815 12104 5.20 0.000 243.69 d 0.723 224.70 d 0.0068 3.4 177.3 Earth 1.000 12742 5.52 0.0034 23.9345 h 1.000 365.26 d 0.0167 0.00 23.45 Mars 0.107 6780 3.93 0.0065 24.623 h 1.524 686.98 d 0.0934 1.85 25.19 Jupiter 317.83 139822 1.33 0.0649 9.925 h 5.203 11.86 y 0.04845 1.305 3.12 Saturn 95.162 116464 0.687 0.098 10.50 h 9.539 29.46 y 0.05565 2.489 26.73 Uranus 14.536 50724 1.32 0.023 17.24 h 19.182 84.01 y 0.0472 0.773 97.86 Neptune 17.147 49248 1.64 0.017 16.11 h 30.06 164.79 y 0.00858 1.773 29.56 Pluto 0.0021 2274 2.05 0.0 6.405 d 39.53 247.68 y 0.2482 17.15 122.46
#include <iostream> // std IO #include <stdio.h> // printf, sprintf #include <fstream> // file streams #include <limits.h> // INT_MAX, etc #include <map> // associative maps using namespace std; // --- ----------------- // --- planet data class // --- ----------------- struct A_Planet { double planet_mass; double diameter; double density; double oblateness; double rotation; char rotationUnit; double distance; double revolution; char revolutionUnit; double eccentricity; double inclination; double axis_tilt; string getName(){return planet_name;} // only way to access name A_Planet(string name) {planet_name=name;} // constructor private: string planet_name; // cannot be changed }; // --- ----------------------------------- // --- function for skipping comment lines // --- ----------------------------------- int skipComments(ifstream &fileInputStream) // passing stream by reference { static int nComments = 0; char inChar = fileInputStream.peek(); // peak first char of file while (inChar=='#') // skipping comments { fileInputStream.ignore(INT_MAX, '\n'); // skip to next line inChar = fileInputStream.peek(); // peak first char of line nComments++; } return nComments; } // --- ---- // --- main // --- ---- int main() { map<string,A_Planet*> allPlanets; // mapping string to (pointer to A_Planet) allPlanets["exoplanet"] = new A_Planet("exoplanet"); // ifstream myInput("planets.data"); // input file stream for planetary data // // --- skip comment lines // printf("\n# number of comment lines: %d\n\n",skipComments(myInput)); // // --- reading data from file // string planet_name; while ( !myInput.eof() ) // reading until end of file { myInput >> planet_name; allPlanets[planet_name] = new A_Planet(planet_name); printf("%s .. ",planet_name.c_str()); // myInput >> allPlanets[planet_name]->planet_mass >> allPlanets[planet_name]->diameter >> allPlanets[planet_name]->density >> allPlanets[planet_name]->oblateness >> allPlanets[planet_name]->rotation >> allPlanets[planet_name]->rotationUnit >> allPlanets[planet_name]->distance >> allPlanets[planet_name]->revolution >> allPlanets[planet_name]->revolutionUnit >> allPlanets[planet_name]->eccentricity >> allPlanets[planet_name]->inclination >> allPlanets[planet_name]->axis_tilt; } printf("\n\n"); myInput.close(); // // --- looking at the planets // map<string,A_Planet*>::iterator it = allPlanets.begin(); // instantiate and initialize iterator while (it != allPlanets.end()) { printf("%9s %8.3f %11.3f \n",(it->first).c_str() // key is a string ,(it->second)->planet_mass // value is pointer ,(it->second)->diameter); it++; // next entry } // return 1; }
<new>
|
Low-level memory management utilities |
<memory>
|
Higher level memory management utilities |
<climits>
|
limits of integral types |
<cfloat>
|
limits of float types |
<limits>
|
standardized way to query properties of arithmetic types |
<cctype>
|
functions to determine the type contained in character data |
<cwctype>
|
functions for determining the type of wide character data |
<cstring>
|
various narrow character string handling functions |
<cwchar>
|
various wide and multibyte string handling functions |
<string>
|
basic_string class template |
<vector>
|
vector container |
<deque>
|
deque container |
<list>
|
list container |
<stack>
|
stack container adaptor |
<queue>
|
queue and priority_queue container adaptors |
<set>
|
and multiset associative containers |
<map>
|
map and multimap associative containers |
<iterator>
|
Container iterators |
<iosfwd>
|
forward declarations of all classes in the input/output library |
<ios>
|
ios_base class, basic_ios class template and several typedefs |
<istream>
|
basic_istream class template and several typedefs |
<ostream>
|
basic_ostream, basic_iostream class templates and several typedefs |
<iostream>
|
several standard stream objects |
<fstream>
|
basic_fstream, basic_ifstream, basic_ofstream class templates and several typedefs |
<sstream>
|
basic_stringstream, basic_istringstream, basic_ostringstream class templates and several typedefs |
<strstream>
|
strstream, istrstream, ostrstream(deprecated) |
<iomanip>
|
Helper functions to control the format or input and output |
<streambuf>
|
basic_streambufclass template |
<cstdio>
|
C-style input-output functions |
<locale>
|
Localization utilities |
<clocale>
|
C localization utilities |
#include <iostream> using namespace std; #define EulerNumber 2.71828182845904523536028747135266249775724709369995 #define MIN(a,b) (((a)<(b)) ? a : b) // a user defined macro #define VARIABLE_NAME(x) #x // expanding to string int main () { cout << "value of __LINE__ : " << __LINE__ << endl; cout << "value of __FILE__ : " << __FILE__ << endl; cout << "value of __FUNCTION__ : " << __FUNCTION__ << endl; cout << "value of __DATE__ : " << __DATE__ << endl; cout << "value of __TIME__ : " << __TIME__ << endl; // cout << endl; cout << "value of __VERSION__ : " << __VERSION__ << endl; cout << "value of __TIMESTAMP__ : " << __TIMESTAMP__ << endl; // cout << endl; cout << "value of EulerNumber : " << EulerNumber << endl; return 0; }