今天遇到一個奇怪的問題,是有關于vector的.
他一直提示: subcript out of range.這是指下標越界的問題,怎么也沒有理解如何下標越界了.
代碼我這樣寫的:
for (size_t i= vc.size()-1; i >= 0; i--)
{
....
}
覺得這個問題很蹊蹺,在什么地方越界的呢?
跟蹤了一下i值的變化,原來i值的變化并非按照我想像的那樣進行,當i為零后,再減一,并不是變為一個負數,而是變成了一個非常大的正數,所以此時提醒越界了.
原來是這個原因.
對于vector的用法不是很熟,我暫時改為
int size = vc.size()-1;
for (int i = size; i>=0; i--)
{
......
}
這樣就解決了越界的問題.
那么發生這個問題的原因是什么呢?
我們需要清楚size_t的類型是什么?
size_t
有時就是unsigned int;
有時就是unsigned long;
通過這個我們就知道size_t是無符號整數,所以這個問題也就清楚了.
那有沒有很好的方法來解決這個問題呢?
不像我那么笨的輸出呢?
有:
for (std::vector<int>::reverse_iterator i = vc.rbegin(); i < vc.rend(); i++)
{
......
}
這樣就把vctor中的元素顛倒了一個順序輸出了.
歡迎大家指教.
posted on 2008-12-29 11:37
Sandy 閱讀(546)
評論(1) 編輯 收藏 引用 所屬分類:
c++學習