29 std::vector<std::vector<bool> > elFilter_;
31 std::vector<std::set<size_t> > elements_;
35 filterDefined_(
false),
39 template<
class VectorSize>
44 elFilter_(m, std::vector<bool>(
n,
false)),
46 CPPADCG_ASSERT_KNOWN(rows.size() == cols.size(),
"The number of row indexes must be the same as the number of column indexes.")
47 for (
size_t i = 0;
i < rows.size();
i++) {
48 elFilter_[rows[
i]][cols[
i]] =
true;
52 template<
class VectorSet>
54 const VectorSet& elements) :
56 elFilter_(m, std::vector<bool>(
n,
false)),
58 CPPADCG_ASSERT_KNOWN(elements.size() <= m,
"Invalid number of rows.")
60 for (
size_t i = 0;
i < elements.size();
i++) {
61 for (
size_t it : elements[
i]) {
62 elFilter_[
i][
it] =
true;
67 inline bool isFilterDefined()
const {
68 return filterDefined_;
71 inline bool isFullDefined()
const {
75 inline void setFullElements(
const std::vector<std::set<size_t> >& elements) {
81 inline const std::vector<std::set<size_t> >& getFullElements()
const {
85 inline void filter(
CppAD::vector<std::set<size_t> >& sparsity)
const {
90 inline void filter(std::vector<std::set<size_t> >& sparsity)
const {
95 inline void filter(
ArrayView<std::set<size_t> >& sparsity)
const {
101 for (
size_t i = 0;
i < sparsity.size();
i++) {
102 it = sparsity[
i].begin();
103 while (
it != sparsity[
i].end()) {