How to create a test function in c++ and compile the function?

Viewed 31

I am struggling with two problem, i have a class that use std::map and uses constructor. I need to find a way in C++ that will make a consecutive map entries must not contain the same value: ..., (3,'A'), (5,'A'), ... is not allowed. Likewise, the first entry in m_map must not contain the same value as m_valBegin. Secondly must create a test function tests the functionality of the interval_map, for example using a map of int intervals to char.

// Current code

<pre>#include <iostream>
#include <map>


class interval_map {
    friend void IntervalMapTest();
    V m_valBegin;
    typedef std::map<K,V> m_map;
    
public:
    // constructor associates whole range of K with val
    interval_map(V const& val)
    : m_valBegin(val)
    {}

    // Assign value val to interval [keyBegin, keyEnd).
    // Overwrite previous values in this interval.
    // Conforming to the C++ Standard Library conventions, the interval
    // includes keyBegin, but excludes keyEnd.
    // If !( keyBegin < keyEnd ), this designates an empty interval,
    // and assign must do nothing.
void assign( K const& keyBegin, K const& keyEnd, V const& val )
{
    for( auto it = m_map.find( keyBegin ); * it != keyEnd; ++it )
    {
        * it = val;
    }
}

    // look-up of the value associated with key
    V const& operator[]( K const& key ) const {
        auto it=m_map.upper_bound(key);
        if(it==m_map.begin()) {
            return m_valBegin;
        } else {
            return (--it)->second;
        }
    }
};

int main()
{
    m_map map;
    m_map::iterator mpIter;
    
    int keyEnd, keyBegin;
    int count;
    
    // keep track of values with a std::set
    std::set<std::string> values;

    for(count = 0; count < 3; count++)
    {
        cin >> key;
        cin >> value;

        auto found = map.find(key);

        if(found != map.end()) // key already in map
            continue; // don't add it again

        // now try to add it to the set
        // only add to the map if its value is not already in the set
        if(values.insert(value).second)
            map.insert(std::make_pair(key, value));
    }

    
    return 0;
}
0 Answers
Related