Resolve vector<bool>::iterator crash (#5642)
This commit is contained in:
parent
751160b69c
commit
c42f533ae9
@ -82,14 +82,16 @@ template <typename BinIdxType>
|
|||||||
class DenseColumn: public Column<BinIdxType> {
|
class DenseColumn: public Column<BinIdxType> {
|
||||||
public:
|
public:
|
||||||
DenseColumn(ColumnType type, common::Span<const BinIdxType> index,
|
DenseColumn(ColumnType type, common::Span<const BinIdxType> index,
|
||||||
uint32_t index_base,
|
uint32_t index_base, const std::vector<bool>& missing_flags,
|
||||||
const std::vector<bool>::const_iterator missing_flags)
|
size_t feature_offset)
|
||||||
: Column<BinIdxType>(type, index, index_base),
|
: Column<BinIdxType>(type, index, index_base),
|
||||||
missing_flags_(missing_flags) {}
|
missing_flags_(missing_flags),
|
||||||
bool IsMissing(size_t idx) const { return missing_flags_[idx]; }
|
feature_offset_(feature_offset) {}
|
||||||
|
bool IsMissing(size_t idx) const { return missing_flags_[feature_offset_ + idx]; }
|
||||||
private:
|
private:
|
||||||
/* flags for missing values in dense columns */
|
/* flags for missing values in dense columns */
|
||||||
std::vector<bool>::const_iterator missing_flags_;
|
const std::vector<bool>& missing_flags_;
|
||||||
|
size_t feature_offset_;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*! \brief a collection of columns, with support for construction from
|
/*! \brief a collection of columns, with support for construction from
|
||||||
@ -208,10 +210,8 @@ class ColumnMatrix {
|
|||||||
column_size };
|
column_size };
|
||||||
std::unique_ptr<const Column<BinIdxType> > res;
|
std::unique_ptr<const Column<BinIdxType> > res;
|
||||||
if (type_[fid] == ColumnType::kDenseColumn) {
|
if (type_[fid] == ColumnType::kDenseColumn) {
|
||||||
std::vector<bool>::const_iterator column_iterator = missing_flags_.begin();
|
|
||||||
advance(column_iterator, feature_offset); // increment iterator to right position
|
|
||||||
res.reset(new DenseColumn<BinIdxType>(type_[fid], bin_index, index_base_[fid],
|
res.reset(new DenseColumn<BinIdxType>(type_[fid], bin_index, index_base_[fid],
|
||||||
column_iterator));
|
missing_flags_, feature_offset));
|
||||||
} else {
|
} else {
|
||||||
res.reset(new SparseColumn<BinIdxType>(type_[fid], bin_index, index_base_[fid],
|
res.reset(new SparseColumn<BinIdxType>(type_[fid], bin_index, index_base_[fid],
|
||||||
{&row_ind_[feature_offset], column_size}));
|
{&row_ind_[feature_offset], column_size}));
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user