Use swap instead of copy in RtcHistogram::GetAndReset.

BUG=webrtc:5283

Review-Url: https://codereview.webrtc.org/2268323002
Cr-Commit-Position: refs/heads/master@{#15311}
diff --git a/webrtc/system_wrappers/source/metrics_default.cc b/webrtc/system_wrappers/source/metrics_default.cc
index 8ee10ba..d7d24fa 100644
--- a/webrtc/system_wrappers/source/metrics_default.cc
+++ b/webrtc/system_wrappers/source/metrics_default.cc
@@ -9,6 +9,8 @@
 
 #include "webrtc/system_wrappers/include/metrics_default.h"
 
+#include <algorithm>
+
 #include "webrtc/base/criticalsection.h"
 #include "webrtc/base/thread_annotations.h"
 #include "webrtc/system_wrappers/include/metrics.h"
@@ -34,10 +36,8 @@
   }
 
   void Add(int sample) {
-    if (sample < min_)
-      sample = min_ - 1;  // Underflow bucket.
-    if (sample > max_)
-      sample = max_;
+    sample = std::min(sample, max_);
+    sample = std::max(sample, min_ - 1);  // Underflow bucket.
 
     rtc::CritScope cs(&crit_);
     if (info_.samples.size() == kMaxSampleMapSize &&
@@ -55,8 +55,9 @@
 
     SampleInfo* copy =
         new SampleInfo(info_.name, info_.min, info_.max, info_.bucket_count);
-    copy->samples = info_.samples;
-    info_.samples.clear();
+
+    std::swap(info_.samples, copy->samples);
+
     return std::unique_ptr<SampleInfo>(copy);
   }