template <class value_type>
struct const_set {
vector<value_type> vec;
int vec_sorted_len;
void clear() {
vec.clear();
vec_sorted_len = 0;
}
void sort() {
std::sort (vec.begin() + vec_sorted_len, vec.end());
std::inplace_merge (vec.begin(), vec.begin() + vec_sorted_len, vec.end());
vec_sorted_len = vec.size();
}
decltype (vec.begin()) find (const value_type & value) {
auto it = lower_bound (vec.begin(), vec.begin() + vec_sorted_len, value);
if (it == vec.begin() + vec_sorted_len || *it != value) {
it = vec.end();
}
return it;
}
int count (const value_type & value) {
auto it = find (value);
if (it != vec.end()) {
return 1;
}
return 0;
}
void insert (const value_type& value) {
vec.push_back (value);
}
};
【数据结构】静态set
发布时间 2023-12-04 16:48:44作者: purinliang