C ++ template function for arrays, vectors, built-in types, STL

I would like to create a class that has a function that saves the data sent to it in a text file. The data that can be transferred to it, can be similar to std::string, int, double, float, unsigned intetc., and also can be: std::vector<T>, T[]and std::vector<std::vector<T>>, T[][].

Now, obviously, if it is an array, I will need to iterate over it to send the data to a text file.

I was thinking about using patterns, but I'm not sure how to make arrays.

Is that the way?

class CMyClass
{
    template<typename T>
    void SaveData(T data);
    void SaveData(std::vector<T> data);
    void SaveData(std::string data);
    void SaveData(T* data);                // Perhaps I'll also need to pass in the size.
    void SaveData(std::vector<std::vector<T>> data);
    void SaveData(T** data);
};

I assume that the code for std::stringwill be the same as the code for std::vector<T>, provided that it Tis a built-in type (e.g., intor floator something else).

SaveData(...) ?

+5
2

, . , . :

class CMyClass
{
public:
    template<typename T> void SaveData(const T &data);
    template<typename T, size_t N> void SaveData(const T (&data)[N]);
    template<typename T, size_t N, size_t M> void SaveData(const T (&data)[N][M]);
    template<typename T> void SaveData(const std::vector<T> &data);
    template<typename T> void SaveData(const std::vector<std::vector<T> > &data);
    void SaveData(const std::string &data);
};

, , :

int i;
int i1[5];
int i2[5][7];
std::vector<int> v1;
std::vector<std::vector<int> > v2;
std::string s;

CMyClass saveClass;

saveClass.SaveData<int>(i);
saveClass.SaveData<int>(i1);
saveClass.SaveData<int>(i2);
saveClass.SaveData<int>(v1);
saveClass.SaveData<int>(v2);
saveClass.SaveData(s);

singleton static, CMyClass :

CMyClass::SaveData<int>(i);
CMyClass::SaveData<int>(i1);
CMyClass::SaveData<int>(i2);
CMyClass::SaveData<int>(v1);
CMyClass::SaveData<int>(v2);
CMyClass::SaveData(s);

:

  • (, " ", "" ), , .
  • , , , . .
  • , " > " .

!

+5

, , : , ( "" ) . , , - .

STL <algorithm>:

http://www.cplusplus.com/reference/algorithm/

, . find:

template<class InputIterator, class T>
  InputIterator find ( InputIterator first, InputIterator last, const T& value )
  {
    for ( ;first!=last; first++) if ( *first==value ) break;
    return first;
  }

, vector, list, - .

, vector<vector<T> > ( >!), , . , T vector? , .

boost :

http://www.boost.org/doc/libs/1_48_0/libs/iterator/doc/index.html

0

All Articles