[ create a new paste ] login | about

Link: http://codepad.org/SBU0sdxB    [ raw code | fork ]

C++, pasted on May 12:
template<class String, class Iter>
String join(Iter const begin, Iter const end, String const& sep) {
  String result;
  if (begin != end) {
    {
      Iter i = begin;
      int final_size = i->length();
      while (++i != end) {
        final_size += sep.length() + i->length();
      }
      result.reserve(final_size);
    }
    {
      Iter i = begin;
      result += *i;
      ++i;
      for (; i != end; ++i) {
        result += sep;
        result += *i;
      }
    }
  }
  return result;
}
template<class String, class Iter>
String join(Iter const begin, Iter const end) {
  String result;
  {
    int final_size = 0;
    for (Iter i = begin; i != end; ++i) {
      final_size += i->length();
    }
    result.reserve(final_size);
  }
  for (Iter i = begin; i != end; ++i) {
    result += *i;
  }
  return result;
}


Create a new paste based on this one


Comments: