chromium/chrome/common/privacy_budget/order_preserving_set.h

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_COMMON_PRIVACY_BUDGET_ORDER_PRESERVING_SET_H_
#define CHROME_COMMON_PRIVACY_BUDGET_ORDER_PRESERVING_SET_H_

#include <type_traits>
#include <vector>

#include "base/check.h"
#include "base/containers/flat_set.h"
#include "base/stl_util.h"

// A combination of a set and a list. Lookup semantics come from the set,
// iterator semantics come from the list.
//
// Iterators preserve the insertion or initialization order.
//
// Implementing Container, ReversibleContainer, AssociativeContainer are
// non-goals. It has the bare minimum functionality required for the use cases
// in this directory.
//
// It is assumed that there will be waay more lookups than mutations. Otherwise
// the underlying container choices may not be efficient.
template <typename T>
class OrderPreservingSet {};

#endif  // CHROME_COMMON_PRIVACY_BUDGET_ORDER_PRESERVING_SET_H_