Array namespace

View versions (1)

Interface

#include <codecogs/computing/array/lookup.h>

using namespace Computing::Array;

This function looks up a value in the given vector. When value is found in the lookup vector, the function returns the corresponding value from the result vector. It is equivalent to the vector form of the Microsoft Excel function LOOKUP. If the parameter sorted is set to true, then this function uses a binary search approach to find the value in lookup. If an exact match cannot be found then it returns the next largest value.

The two vectors lookup and result must be of equal length.

Example:

#include <vector>
#include <iostream>
#include <stdio.h>
#include <codecogs/computing/array/lookup.h>

using namespace std;

int main()
{
  vector<double> rowA;
  vector<char> rowB;

  rowA.push_back(-2.3);
  rowA.push_back(1.37);
  rowA.push_back(1.54);
  rowA.push_back(2.02);
  rowA.push_back(2.17);

  rowB.push_back('a');
  rowB.push_back('b');
  rowB.push_back('c');
  rowB.push_back('d');
  rowB.push_back('e');

  cout<<"lookup vector:\n";
  for (unsigned int i=0; i<rowA.size(); i++) cout<<rowA[i]<<"\t";
  cout<<"\n";

  cout<<"result vector:\n";
  for (unsigned int i=0; i<rowB.size(); i++) cout<<rowB[i]<<"\t";
  cout<<"\n";

  cout<<"lookup 1.37=";
  cout<<Array::Search::lookup<double, char>(1.37, rowA, rowB);
  cout<<"\n";

  cout<<"lookup 1.36=";
  cout<<Array::Search::lookup<double, char>(1.36, rowA, rowB);
  cout<<"\n";

  cout<<"lookup 1.36 (sort=false)=";
  cout<<Array::Search::lookup<double, char>(1.36, rowA, rowB, false);
  cout<<"\n";

  cout<<"lookup 2.01=";
  cout<<Array::Search::lookup<double, char>(2.01, rowA, rowB);
  cout<<"\n";
}

Output:

lookup vector:
-2.3    1.37    1.54    2.02    2.17
result vector:
  a       b       c       d       e
  lookup 1.37=b
  lookup 1.36=a
  lookup 1.36 (sort=false)=?
  lookup 2.01=c

Parameters

value
the value to search for in lookup
lookup
a vector of values
result
a vector of values
sorted
indicated is the data lookup vector is sorted.

Returns

the result value from the result vector
GPL Licence — free for non commercial use. See Licence details.