diff options
| author | Alexander Karatarakis <alkarata@microsoft.com> | 2017-08-28 18:36:25 -0700 |
|---|---|---|
| committer | Alexander Karatarakis <alkarata@microsoft.com> | 2017-08-28 19:54:01 -0700 |
| commit | dc46f68f6a2e7a4079c6ad1e1545705d379b9a51 (patch) | |
| tree | 8a56205bd343a3211fc1f239559d026387ead267 | |
| parent | 174c264b449dc77ab71ae07aa78673239ebd0c48 (diff) | |
| download | vcpkg-dc46f68f6a2e7a4079c6ad1e1545705d379b9a51.tar.gz vcpkg-dc46f68f6a2e7a4079c6ad1e1545705d379b9a51.zip | |
[Strings::join()] Modify to work for any container
| -rw-r--r-- | toolsrc/include/vcpkg_Strings.h | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/toolsrc/include/vcpkg_Strings.h b/toolsrc/include/vcpkg_Strings.h index 7cea63676..a7c6148d7 100644 --- a/toolsrc/include/vcpkg_Strings.h +++ b/toolsrc/include/vcpkg_Strings.h @@ -65,20 +65,20 @@ namespace vcpkg::Strings template<class Container, class Transformer, class CharType> std::basic_string<CharType> join(const CharType* delimiter, const Container& v, Transformer transformer) { - if (v.size() == 0) + const auto begin = v.begin(); + const auto end = v.end(); + + if (begin == end) { return std::basic_string<CharType>(); } std::basic_string<CharType> output; - const size_t size = v.size(); - - output.append(transformer(v[0])); - - for (size_t i = 1; i < size; ++i) + output.append(transformer(*begin)); + for (auto it = std::next(begin); it != end; ++it) { output.append(delimiter); - output.append(transformer(v[i])); + output.append(transformer(*it)); } return output; @@ -86,7 +86,7 @@ namespace vcpkg::Strings template<class Container, class CharType> std::basic_string<CharType> join(const CharType* delimiter, const Container& v) { - using Element = decltype(v[0]); + using Element = decltype(*v.begin()); return join(delimiter, v, [](const Element& x) -> const Element& { return x; }); } |
