I can't seem to figure out an elegant way to do this, but I know I have seen it in the past. I just don't know what to search for.

I am given the row and column indices, `r`

and `c`

of a 2-D matrix. I want to be able to traverse the 4 neighbors. If the element is at a corner, it will only have 2 neighbors. If the element is at the boundary, but not a corner, it will have 3 neighbors. If it's interior it will have 4 neighbors.

So I want to traverse `(r+1,c)`

, `(r-1,c)`

, `(r,c+1)`

, `(r,c-1)`

and perform the bounds check `r >= 0 && r < num_rows`

and `c >= 0 && c < num_cols`

simultaneously in a double nested for loop.

The only thing I was able to come up with is this:

```
vector<vector<int>> adds{{0,1},{1,0},{-1,0},{0,-1}}
for(int i = 0; i < adds.size(); i++)
{
//do bounds checking with r + adds[i][0] and c + adds[i][1]
//do something with matrix[r + adds[i][0]][c + adds[i][1]]
}
```

The particularly elegant one I remember seeing did something with a max function and didn't use the `adds`

array that I have.