MCPcopy Create free account
hub / github.com/Geode-solutions/OpenGeode / delete_vector_elements

Function delete_vector_elements

include/geode/basic/algorithm.hpp:56–83  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

54 */
55 template < typename DeleteContainer, typename ValueContainer >
56 index_t delete_vector_elements(
57 const DeleteContainer& to_delete, ValueContainer& values )
58 {
59 OpenGeodeBasicException::check_assertion(
60 to_delete.size() == values.size(),
61 "[delete_vector_elements] Number of elements in the two vectors "
62 "should match" );
63 const auto first_true = absl::c_find( to_delete, true );
64 if( first_true == to_delete.end() )
65 {
66 return 0;
67 }
68 index_t nb_removed_elements{ 0 };
69 for( const auto i :
70 Range{ first_true - to_delete.begin(), to_delete.size() } )
71 {
72 if( to_delete[i] )
73 {
74 nb_removed_elements++;
75 }
76 else
77 {
78 values[i - nb_removed_elements] = std::move( values[i] );
79 }
80 }
81 values.erase( values.end() - nb_removed_elements, values.end() );
82 return nb_removed_elements;
83 }
84
85 /*!
86 * Create a new vector containing only some elements from a given vector.

Callers 4

delete_elementsMethod · 0.85
delete_elementsMethod · 0.85

Calls 4

sizeMethod · 0.45
endMethod · 0.45
beginMethod · 0.45
eraseMethod · 0.45

Tested by 1