Recorriendo los elementos distintos de cero de una matriz dispersa de uBlas

Tengo la siguiente matriz dispersa que contieneO(N) elementos

boost::numeric::ublas::compressed_matrix<int> adjacency (N, N);

Podría escribir un bucle doble de fuerza bruta para revisar todas las entradas enO(N^2) Tiempo como el de abajo, pero esto va a ser muy lento.

for(int i=0; i<N; ++i)
   for(int j=0; j<N; ++j)
       std::cout << adjacency(i,j) std::endl;

¿Cómo puedo hacer un bucle solo en las entradas que no son cero enO(N) ¿hora? Para cada elemento distinto de cero, me gustaría tener acceso a su valor, y los índicesi,j.

Respuestas a la pregunta(1)

Su respuesta a la pregunta