Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <vector>
- template <typename T>
- class fset : public std::vector<T>
- {
- public:
- fset<T> operator == (T val) const
- {
- fset<T> nset;
- for (int i = 0; i < std::vector<T>::size(); ++i)
- if ((*this)[i] == val)
- nset.push_back((*this)[i]);
- return nset;
- }
- fset<T> operator != (T val) const
- {
- fset<T> nset;
- for (int i = 0; i < std::vector<T>::size(); ++i)
- if ((*this)[i] != val)
- nset.push_back((*this)[i]);
- return nset;
- }
- fset<T> operator > (T val) const
- {
- fset<T> nset;
- for (int i = 0; i < std::vector<T>::size(); ++i)
- if ((*this)[i] > val)
- nset.push_back((*this)[i]);
- return nset;
- }
- fset<T> operator >= (T val) const
- {
- fset<T> nset;
- for (int i = 0; i < std::vector<T>::size(); ++i)
- if ((*this)[i] >= val)
- nset.push_back((*this)[i]);
- return nset;
- }
- fset<T> operator < (T val) const
- {
- fset<T> nset;
- for (int i = 0; i < std::vector<T>::size(); ++i)
- if ((*this)[i] < val)
- nset.push_back((*this)[i]);
- return nset;
- }
- fset<T> operator <= (T val) const
- {
- fset<T> nset;
- for (int i = 0; i < std::vector<T>::size(); ++i)
- if ((*this)[i] <= val)
- nset.push_back((*this)[i]);
- return nset;
- }
- fset<T> & operator += (T val)
- {
- std::vector<T>::push_back(val);
- return *this;
- }
- T sum () const
- {
- double ssum = 0.0;
- for (int i = 0; i < std::vector<T>::size(); ++i)
- ssum += (*this)[i];
- return ssum;
- }
- T average () const
- {
- return sum() / std::vector<T>::size();
- }
- };
- int main ()
- {
- fset<double> arr;
- arr += 4;
- arr += 5;
- arr += -4;
- arr += -5;
- printf("Average = %f\n", arr.average());
- printf("Average pos = %f\n", (arr > 0.0).average());
- printf("Average neg = %f\n", (arr < 0.0).average());
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement