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

后端 未结 2 2027
我寻月下人不归
我寻月下人不归 2021-01-13 07:34

I would like to make a class that has a function that saves the data sent to it, to a text file. The data that can be passed to it can be anything like a std::string<

2条回答
  •  [愿得一人]
    2021-01-13 08:16

    I believe you're mixing two things in one class, which should be avoided: As far as I can see, what your class is about (its "responsibility") is to write data to a file. Another thing you're adding is knowledge about iterating collections of data.

    Take a look at STL's methods:

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

    There you can find generic ways of iterating data, e.g. in the find method:

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

    This makes you independent from whether you are using vector, list, arrays or whatever.

    If you also want to serialize things like vector > (note the space between the two >!), you have to explain more on what you want to do with such data. Simply concat the elements as if all Ts were in one vector? In this case you might try to create a new iterator which does exactly this.

    The boost iterator library could help with this:

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

提交回复
热议问题