Browse Source
Added capability to restrict model to certain action choices.
Added capability to restrict model to certain action choices.
Former-commit-id: fb3c63c64f
tempestpy_adaptions
dehnert
11 years ago
2 changed files with 93 additions and 19 deletions
@ -0,0 +1,52 @@ |
|||||
|
/* |
||||
|
* set.h |
||||
|
* |
||||
|
* Created on: 06.12.2012 |
||||
|
* Author: Christian Dehnert |
||||
|
*/ |
||||
|
|
||||
|
#ifndef STORM_UTILITY_SET_H_ |
||||
|
#define STORM_UTILITY_SET_H_ |
||||
|
|
||||
|
#include <set> |
||||
|
|
||||
|
#include "log4cplus/logger.h" |
||||
|
#include "log4cplus/loggingmacros.h" |
||||
|
|
||||
|
extern log4cplus::Logger logger; |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace utility { |
||||
|
namespace set { |
||||
|
|
||||
|
template<typename T, typename Compare> |
||||
|
bool isSubsetOf(std::set<T, Compare> const& set1, std::set<T, Compare> const& set2) { |
||||
|
// First, get a comparator object. |
||||
|
typename std::set<T, Compare>::key_compare comparator = set1.key_comp(); |
||||
|
|
||||
|
for (typename std::set<T, Compare>::const_iterator it1 = set1.begin(), it2 = set2.begin(); it1 != set1.end() && it2 != set2.end(); ++it1) { |
||||
|
// If the value in set1 is smaller than the value in set2, set1 is not a subset of set2. |
||||
|
if (comparator(*it1, *it2)) { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
// If the value in the second set is smaller, we need to move the iterator until the comparison is false. |
||||
|
while(comparator(*it2, *it1) && it2 != set2.end()) { |
||||
|
++it2; |
||||
|
} |
||||
|
|
||||
|
// If we have reached the end of set2 or the element we found is actually larger than the one in set1 |
||||
|
// we know that the subset property is violated. |
||||
|
if (it2 == set2.end() || comparator(*it1, *it2)) { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
// Otherwise, we have found an equivalent element and can continue with the next one. |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} // namespace set |
||||
|
} // namespace utility |
||||
|
} // namespace storm |
||||
|
|
||||
|
#endif /* STORM_UTILITY_SET_H_ */ |
Write
Preview
Loading…
Cancel
Save
Reference in new issue