static void JoinStringsIterator(const ITERATOR& start, const ITERATOR& end, const char* delim, string* result) { GOOGLE_CHECK(result != NULL); result->clear(); int delim_length = strlen(delim); // Precompute resulting length so we can reserve() memory in one shot. int length = 0; for (ITERATOR iter = start; iter != end; ++iter) { if (iter != start) { length += delim_length; } length += iter->size(); } result->reserve(length); // Now combine everything. for (ITERATOR iter = start; iter != end; ++iter) { if (iter != start) { result->append(delim, delim_length); } result->append(iter->data(), iter->size()); } }