Polecam użyć to tego celu kontenerów z biblioteki STL - na przykład std::vector<bool>.
Przykład ( wymaga standardu C++14 ):
#include <iostream>
#include <vector>
#include <utility>
using namespace std;
auto locate_groups( const vector<bool>& data )
{
vector<int> result;
int group {0};
for( auto iter {cbegin(data)} ; iter != cend(data) ; ++iter )
{
if( *iter ) ++group;
if( group>0 && ( !*iter || iter == cend(data)-1 ) ) result.push_back( exchange(group,0) );
}
return result;
}
int main()
{
vector<vector<bool>> data ={ { 1,0,0,1,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 },
{ 1,0,0,1,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,1,1,1,1,0,0,0,1,1,1,0,1,0,0,0,0,1,1,1,1,1,1,1,1,1 } };
for( const auto& row : data )
{
for( const auto& group : locate_groups( row ) ) cout << group << ' ';
cout << endl;
}
}
https://godbolt.org/z/rKThKz