title: caching multiple key hash
body: <p>I want to do some caching in my project.</p>
  
  <p>Let my API is <code>int foo(int a, float b, float c, int d, char e)</code></p>
  
  <p>Now in my project, there is lot of calls to above time consuming API with repeating values of a, b, c ,d and e. Now I want to store return value of this function with these arguments as keys. </p>
  
  <p>suppose my call sequence is </p>
  
  <pre><code>foo(23, 3.45, 4.5, 90, 'd') // returns 1000, so I need to store it in cache as (23,3.45, 4.5, 90, 'd')-&gt;1000
  
  foo(30, 1.2, 3.5, 100, 'e') // returns 2000, so I need to store it in cache as (30, 1.2, 3.5, 100, 'e')-&gt;2000
  
  foo(23, 3.45, 4.5, 90, 'd') // No need to call this API, I just check in my cache value associated with    
  //(23, 3.45, 4.5, 90, 'd'), which is already stored as 1000
  </code></pre>
  
  <p>What should be best strategy to implement above in C++? which data structure would be best to make cache table?</p>