我有一个充满集合的 vector ,我正在使用这段代码在 vector 中寻找一个整数:
for(int j = 0; j <= vector.size(); ++j){
if(vector[j].find(find) != vector[j].end())
std::cout << "FOUND: " << propagator << "\n";
}
}
这将在找到“find”时输出,是否有返回该集合在 vector 中的位置
例如,如果 find = 5,并且我的 vector 包含元素:
[0] 2 3
[1] 4 5
无论如何我可以返回位置 1 的集合,最终我想从数组中删除整个集合
我一直在用
for(int j = 0; j <= vector.size(); ++j){
if(vector[j].find(find) != vector[j].end())
vector.erase (vector.begin()+j);
}
最佳答案
归位并不难。例如,您可以使用标准算法 std::find_if
,然后应用函数 std::distance
来确定位置。或者您可以使用循环自己编写函数
std::vector<std::set<int>>::size_type i = 0;
while ( i < v.size() && v[i].find( key ) == v[i].end() ) ++i;
if ( i != v.size() ) v.erase( std::next( v.begin(), i ) );
或
auto it = std::find_if( v.begin(), v.end(),
[&]( const std::set<int> &s )
[
return ( s.find(key ) != s.end() );
} );
if ( it != v.end() ) v.erase( it );
如果您需要删除 vector 中包含给定值(键)的所有元素,那么您可以使用标准算法 std::remove_if
以及成员函数 erase
关于c++ - 从集合 vector 中删除集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23156324/