Add method DynamicState::find_not()
This commit is contained in:
@@ -143,25 +143,33 @@ class DynamicState {
|
||||
}
|
||||
}
|
||||
|
||||
/// Will return the index of the first occurence of @value, or
|
||||
/// -1 if @value is not found.
|
||||
int find(const T& value) const {
|
||||
auto iter = std::find( m_data.begin() , m_data.end() , value);
|
||||
if( iter == this->m_data.end() ) return -1;
|
||||
/// Will return the index of the first occurence of @value, or
|
||||
/// -1 if @value is not found.
|
||||
int find(const T& value) const {
|
||||
auto iter = std::find( m_data.begin() , m_data.end() , value);
|
||||
if( iter == this->m_data.end() ) return -1;
|
||||
|
||||
return std::distance( m_data.begin() , iter );
|
||||
}
|
||||
return std::distance( m_data.begin() , iter );
|
||||
}
|
||||
|
||||
/// Will return the index of the first value which is != @value, or -1
|
||||
/// if all values are == @value
|
||||
int find_not(const T& value) const {
|
||||
auto iter = std::find_if_not( m_data.begin() , m_data.end() , [&value] (const T& elm) { return value == elm; });
|
||||
if( iter == this->m_data.end() ) return -1;
|
||||
|
||||
return std::distance( m_data.begin() , iter );
|
||||
}
|
||||
|
||||
iterator begin() {
|
||||
return this->m_data.begin();
|
||||
}
|
||||
|
||||
|
||||
iterator end() {
|
||||
return this->m_data.end();
|
||||
}
|
||||
|
||||
iterator begin() {
|
||||
return this->m_data.begin();
|
||||
}
|
||||
|
||||
|
||||
iterator end() {
|
||||
return this->m_data.end();
|
||||
}
|
||||
|
||||
private:
|
||||
std::vector< T > m_data;
|
||||
|
||||
@@ -232,6 +232,8 @@ BOOST_AUTO_TEST_CASE( find ) {
|
||||
|
||||
BOOST_CHECK_EQUAL( state.find( 137 ) , 0 );
|
||||
BOOST_CHECK_EQUAL( state.find( 200 ) , -1 );
|
||||
BOOST_CHECK_EQUAL( state.find_not(137), -1);
|
||||
BOOST_CHECK_EQUAL( state.find_not(200), 0);
|
||||
state.update( 0 , 200 );
|
||||
BOOST_CHECK_EQUAL( state.find( 137 ) , -1 );
|
||||
BOOST_CHECK_EQUAL( state.find( 200 ) , 0 );
|
||||
@@ -239,6 +241,7 @@ BOOST_AUTO_TEST_CASE( find ) {
|
||||
state.update( 2 , 300 );
|
||||
BOOST_CHECK_EQUAL( state.find( 200 ) , 0 );
|
||||
BOOST_CHECK_EQUAL( state.find( 300 ) , 2 );
|
||||
BOOST_CHECK_EQUAL( state.find_not( 200 ) , 2 );
|
||||
|
||||
state.update( 4 , 400 );
|
||||
BOOST_CHECK_EQUAL( state.find( 200 ) , 0 );
|
||||
|
||||
Reference in New Issue
Block a user