Re: ISO standards
In article <13ppmlo5j1f1qac@corp.supernews.com>, Jeffrey Baker
<tbirdjb2@earthlink.net> wrote:
The vector needs a new object for each 10th place to maintain its data and
show it.
Does it? consider:
// Tabulator.hpp
#ifndef TABULATOR_HPP_INCLUDED
#define TABULATOR_HPP_INCLUDED
#include <vector>
class Tabulator
{
std::vector<int> data;
public:
typedef std::vector<int>::const_iterator iterator;
// contents need sorting via sort() after a sequence
// of insert()'s are called. [not each insert()]
void sort();
// the sequence [begin(i),end(i) ) provides contents
// of bin i.
iterator begin(int i)const;
iterator end(int i)const;
void insert(int x);
};
#endif
// tabulator.cp - details...
#include "tabulator.hpp"
#include <algorithm>
void Tabulator::sort()
{
std::sort(data.begin(),data.end());
}
Tabulator::iterator Tabulator::begin(int i) const
{
return std::lower_bound(data.begin(),data.end(),10*i);
}
Tabulator::iterator Tabulator::end(int i) const
{
return std::upper_bound(data.begin(),data.end(),10*i+9);
}
void Tabulator::insert(int x)
{
data.push_back(x);
}
// main.cp
#include "tabulator.hpp"
#include <algorithm>
#include <iterator>
#include <iostream>
int data[] =
{1,50,98,9,76,2,88,22,49,52,0,89,54,25,4,56,97,5,40,44,17,30,75,6,33,7,3
6,10,58,38,65,-1};
int main()
{
Tabulator tab;
for(int *p = data;*p>=
0;++p)
tab.insert(*p);
tab.sort();
for(int i=0;i!=10;++i)
{
std::cout << "values in bin " << i << '\n';
std::copy(tab.begin(i),tab.end(i),
std::ostream_iterator<int>(std::cout," "));
std::cout << '\n';
}
}
// end code
Looks OOP to me the user of Tabulator should care less about the
implementation details and is provided only specified operations on its
contents.
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]