Effective Analysis Programming Part 2

From Gridkaschool
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

C++ Templates

exercise 1: 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?