По какой-то причине, когда я определяю переменную как «uint» вместо «unsigned int» в своей программе, возникают ошибки. Это кажется странным, потому что uint определяется следующим образом:
typedef unsigned int uint;
... поэтому я думаю, что могу использовать их как взаимозаменяемые. Чтобы быть более точным, я присваиваю результат функции, которая возвращает "unsigned int" в переменную uint, затем использую этот uint в вызове изменения размера вектора... и в этот момент возникают ошибки. То есть мой код выглядит примерно так:
unsigned int getUInt()
{
return 3;
}
int main(void) {
vector<vector<float> > vectVect(100000);
for(uint i = 0; i < vectVect.size(); ++i)
{
vector<float>& myVect = vectVect[i];
uint myUnsignedInt = getUInt();
myVect.resize(myUnsignedInt);
}
cout << "finished" << endl;
}
... и строка, в которой он ошибается, - это строка myVect.resize.
Очевидно, у меня уже есть решение, но я хотел бы понять, ПОЧЕМУ это происходит, так как я довольно озадачен. У кого-нибудь есть идеи?
PS - Если кто-то считает, что это имеет значение, я использую gcc v4.1.2 на Fedora 15... и включаемый файл, определяющий uint, находится в /usr/include/sys/types.h.
#include
, объявленияusing
и т. д. И GCC 4.6, вероятно, гораздо более соответствует стандарту, чем 4.1. - person Basile Starynkevitch   schedule 17.11.2011