Difference between revisions of "Effective Analysis Programming Part 2"
From Gridkaschool
m (→exercise 2: read paramerters) |
(→C++ Templates) |
||
Line 1: | Line 1: | ||
==C++ Templates== |
==C++ Templates== |
||
====exercise 1: pair==== |
====exercise 1: pair==== |
||
+ | std::pair is a simple template class to store a pair of values. |
||
− | |||
+ | * Familiarize yourself with the interface of std::pair: http://www.cplusplus.com/reference/utility/pair/ |
||
+ | * Implement your own version: gks::pair with the same members and operators. |
||
+ | * Give examples for the usage of std::pair. |
||
====exercise 2: read paramerters==== |
====exercise 2: read paramerters==== |
Revision as of 17:34, 23 August 2013
C++ Templates
exercise 1: pair
std::pair is a simple template class to store a pair of values.
- Familiarize yourself with the interface of std::pair: http://www.cplusplus.com/reference/utility/pair/
- Implement your own version: gks::pair with the same members and operators.
- Give examples for the usage of std::pair.
exercise 2: read paramerters
The library readparamertes can be used to read values from a text file like:
# GKS 2013
answer 42
parser_test "\\\"" "#" #should result in \" and #
useful yes
The following code is an example how to use readparameters:
#define MAIN_CPP
#include <iostream>
#include <exception>
#include "readparameters.h"
using namespace std;
int main(int argc,char **argv){
//check arguments
if (argc!=2) {
cerr<<"Usage: ./params <paramfile>"<<endl;
return 1;
}
//get input filename from parameter file
int answer;
vector<string> v;
try {
readparameters rp(argv[1]);
answer = rp.get<int>("answer");
v=rp.get_vector<string>("parser_test");
cout<<answer<<endl;
rp.print_tabular(); //debug output
rp.get<long>("Atlantis"); //exception
}
catch (exception& e) {
cerr<<e.what()<<endl;
return 1;
}
return 0;
}
- Run the code, add more parameters to the text file, read a boolean parameter.
- Read the code of the class readparamerters (you may skip the parsing part in the constructor).
- get and get_vector are template functions. Why are there specializations for bool and string?
- Why is the map tabular mutual?
- What are the requirements for types to work with readparameters?
- Why is the default constructor privat?