Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(40)

Side by Side Diff: base/stl_util.h

Issue 11415239: Add STLSetDifference to stl_util.h, because std::set_difference is extremely (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add tests Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Derived from google3/util/gtl/stl_util.h 5 // Derived from google3/util/gtl/stl_util.h
6 6
7 #ifndef BASE_STL_UTIL_H_ 7 #ifndef BASE_STL_UTIL_H_
8 #define BASE_STL_UTIL_H_ 8 #define BASE_STL_UTIL_H_
9 9
10 #include <algorithm>
10 #include <string> 11 #include <string>
11 #include <vector> 12 #include <vector>
12 13
13 // Clears internal memory of an STL object. 14 // Clears internal memory of an STL object.
14 // STL clear()/reserve(0) does not always free internal memory allocated 15 // STL clear()/reserve(0) does not always free internal memory allocated
15 // This function uses swap/destructor to ensure the internal memory is freed. 16 // This function uses swap/destructor to ensure the internal memory is freed.
16 template<class T> 17 template<class T>
17 void STLClearObject(T* obj) { 18 void STLClearObject(T* obj) {
18 T tmp; 19 T tmp;
19 tmp.swap(*obj); 20 tmp.swap(*obj);
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 private: 184 private:
184 T* container_; 185 T* container_;
185 }; 186 };
186 187
187 // Test to see if a set, map, hash_set or hash_map contains a particular key. 188 // Test to see if a set, map, hash_set or hash_map contains a particular key.
188 // Returns true if the key is in the collection. 189 // Returns true if the key is in the collection.
189 template <typename Collection, typename Key> 190 template <typename Collection, typename Key>
190 bool ContainsKey(const Collection& collection, const Key& key) { 191 bool ContainsKey(const Collection& collection, const Key& key) {
191 return collection.find(key) != collection.end(); 192 return collection.find(key) != collection.end();
192 } 193 }
193 194
willchan no longer on Chromium 2012/12/01 17:22:13 New code should go into the base namespace. I know
tfarina 2012/12/01 17:24:19 I tried to do this incrementally, but you wanted m
willchan no longer on Chromium 2012/12/01 17:38:45 If I'm being inconsistent, that's bad. Are you sur
not at google - send to devlin 2012/12/03 20:22:01 I'll put this in base.
195 // Returns a new std::set containing the difference of two sets.
willchan no longer on Chromium 2012/12/01 17:22:13 It does not necessarily return a new std::set. Ple
196 // A convenient wrapper around std::set_difference.
197 template <typename ResultType, typename Arg1, typename Arg2>
198 ResultType STLSetDifference(const Arg1& a1, const Arg2& a2) {
199 ResultType difference;
200 std::set_difference(a1.begin(), a1.end(),
willchan no longer on Chromium 2012/12/01 17:22:13 Jeffrey alluded to it earlier, but the part that w
not at google - send to devlin 2012/12/03 20:22:01 Discussing this with willchan a bit, and it's a bi
Jeffrey Yasskin 2012/12/03 20:29:35 template<typename Container> bool is_sorted(const
not at google - send to devlin 2012/12/03 20:39:10 Dunno, I don't have stl in my veins. But cool, I c
201 a2.begin(), a2.end(),
202 std::inserter(difference, difference.end()));
203 return difference;
204 }
205
194 #endif // BASE_STL_UTIL_H_ 206 #endif // BASE_STL_UTIL_H_
OLDNEW
« no previous file with comments | « base/base.gyp ('k') | base/stl_util_unittest.cc » ('j') | base/stl_util_unittest.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698