Я думаю, это не проблема, какой контейнер вы используете. Вы можете сделать это как
void func(std::vector<std::vector<int> > const& int_matrix);
или в C ++ 11, последующие >
не будут рассматриваться как '>>', поэтому вы также можете использовать
void func(std::vector<std::vector<int>> const& int_matrix);
Но проблема в том, что если ваша работа публикуется в двоичном виде вместо исходного кода, пользователи интерфейса должны иметь ту же реализацию STL, что и ваша, в противном случае могут возникнуть странные ошибки времени выполнения. Поэтому используйте контейнер STL, так как интерфейс не подходит в этой ситуации. Вы должны сами определить некоторые структуры в качестве типа параметров.