cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
container_utils.h
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: Container utilities
4
5
Author: Diffblue Ltd.
6
7
\*******************************************************************/
8
9
#ifndef CPROVER_UTIL_CONTAINER_UTILS_H
10
#define CPROVER_UTIL_CONTAINER_UTILS_H
11
12
#include <set>
13
27
template
<
class
T,
class
Compare,
class
Alloc>
28
bool
util_inplace_set_union
(
29
std::set<T, Compare, Alloc> &target,
30
const
std::set<T, Compare, Alloc> &source)
31
{
32
bool
changed =
false
;
33
typename
std::set<T, Compare, Alloc>::iterator it = target.begin();
34
35
for
(
const
auto
&s : source)
36
{
37
while
(it != target.end() && Compare()(*it, s))
38
{
39
++it;
40
}
41
42
if
(it == target.end() || Compare()(s, *it))
43
{
44
// Insertion hint should point at element that will follow the new element
45
target.insert(it, s);
46
changed =
true
;
47
}
48
else
if
(it != target.end())
49
{
50
++it;
51
}
52
}
53
54
return
changed;
55
}
56
57
#endif
// CPROVER_UTIL_CONTAINER_UTILS_H
util_inplace_set_union
bool util_inplace_set_union(std::set< T, Compare, Alloc > &target, const std::set< T, Compare, Alloc > &source)
Compute union of two sets.
Definition
container_utils.h:28
util
container_utils.h
Generated by
1.17.0