Рекомендуется ли указывать, например, вектор <t>в моем публичном интерфейсе? - PullRequest
5 голосов
/ 02 августа 2011

Я новичок в C ++, и во время написания класса я понял, что один из моих методов - запросить вектор векторов. Должно ли это быть сделано, или я должен переосмыслить интерфейс моего класса? (Как?)

Ответы [ 3 ]

7 голосов
/ 02 августа 2011

Я думаю, это не проблема, какой контейнер вы используете. Вы можете сделать это как

void func(std::vector<std::vector<int> > const& int_matrix);

или в C ++ 11, последующие > не будут рассматриваться как '>>', поэтому вы также можете использовать

void func(std::vector<std::vector<int>> const& int_matrix);

Но проблема в том, что если ваша работа публикуется в двоичном виде вместо исходного кода, пользователи интерфейса должны иметь ту же реализацию STL, что и ваша, в противном случае могут возникнуть странные ошибки времени выполнения. Поэтому используйте контейнер STL, так как интерфейс не подходит в этой ситуации. Вы должны сами определить некоторые структуры в качестве типа параметров.

2 голосов
/ 02 августа 2011

Вектор векторов не обязательно плохая вещь.Если вам нужно что-то вроде многомерного массива, тогда вам нужно то, что вам нужно.(Просто убедитесь, что вы передаете вектор по ссылке [const]).

Вы можете изменить заголовок вашего вопроса, потому что заголовок говорит "vector <<b> T >"смелость, потому что он думает, что это HTML-тег), но ваш вопрос касается вектора векторов.

0 голосов
/ 02 августа 2011

IMO, если возможно, лучше объединить все vector в один vector. Наличие vector из vector не имеет особого смысла для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...