void function(std::vector a) {
for (int i = 0; i < a.size() - 1; i++) {
// 処理
yabee(a.at(i));
}
}
上のはやばい感じです。
はまりますた。
正しくは多分下。
for (int i = 0; i + 1 < a.size(); i++) {
// 処理
yabee(a.at(i));
}
a.size()-1はsize()がsize_tなので-1にならない感じです。
キーワード:
C++,unsigned,オーバーフロー
for ( int i = 0; …
じゃなくて
for ( size_t i = 0; …
ってしたらいいんじゃね?
i < a.size() – 1;
と書いてしまうと、a.size()==0のとき、a.size()-1がsize_tのためおそらく
i < (size_t)(-1)
で、a.size()==0なのにループの中に入る感じです。
ああ、site_t は unsigned だから -1 にならないということですか。なるほど。
よくわかりました。