#ifndef THIRD_PARTY_GBMCWEB_REDFISH_CORE_INCLUDE_UTILS_STL_UTILS_H_
#define THIRD_PARTY_GBMCWEB_REDFISH_CORE_INCLUDE_UTILS_STL_UTILS_H_

#include <algorithm>

namespace redfish {

namespace stl_utils {

template <typename ForwardIterator>
ForwardIterator firstDuplicate(ForwardIterator first, ForwardIterator last) {
  auto newLast = first;

  for (auto current = first; current != last; ++current) {
    if (std::find(first, newLast, *current) == newLast) {
      if (newLast != current) {
        *newLast = *current;
      }
      ++newLast;
    }
  }

  return newLast;
}

template <typename T>
void removeDuplicate(T& t) {
  t.erase(firstDuplicate(t.begin(), t.end()), t.end());
}

}  // namespace stl_utils
}  // namespace redfish

#endif  // THIRD_PARTY_GBMCWEB_REDFISH_CORE_INCLUDE_UTILS_STL_UTILS_H_
