MN>Да согласен — ваша правда... это я поторопился... но как-то у меня такой проблемы никогда не было... наверное потому, что для работы с контейнерами C++ всегда использовал итераторы, а для доступа к массивам в стиле pure C использовал знаковый int и никогда не путал эти понятия между собой, чего и вам советую... ну или если вы моему совету не внемлите, то обращайтесь к С. Ю. Губанову — он вам других советов надаёт
для любителей signed int'ов:
положим захотелось нам искать среднее двух чисел и написали мы функцию:
int kaka (int a, int b){return (a+b)/2;}
и всё вроде тип-топ, но вот тут сунули нам два числа (вполне корректных):
int a = 2113929216;
int b = 2113929210;
и что?

а какое решение-то простое есть? ассемблер в три команды не предлогать, всё на с++

p.s. я решение знаю, но не сказал бы что оно простое