私は現在、ベクトルの範囲内に留まることにいくつか問題があります。私がチェックされている数がベクトル範囲内での滞在方法?
#include <iostream>
#include <vector>
#include <stdexcept>
bool fun(std::vector<int> v)
{
for(int i = 0; i < v.size(); i++)
{
if(v.at(i) <= v.at(i+1))
{
// code
}
}
return true;
}
int main()
{
std::vector<int> v { 1,2,3,4,5,6,7,8,9 };
try
{
std::cout << fun(v);
}
catch(std::out_of_range range_problem)
{
std::cout << "EXCEPTION: " << range_problem.what();
}
return 0;
}
によりat()
への後の数字に小さい又は等しいかどうかを確認しようとしていた次のコードで
、関数は例外ので、出力上記のコードを投げていますこの:
EXCEPTION: vector::_M_range_check
私は、forループでif(i+1 == v.size() - 1) break;
を追加することを考えたが、それは私がそのベクトルの最後の2つの要素を比較することができないであろうことを意味します。
誰でもこの問題の解決策をお勧めしますか?
おかげで、コードのこのセクションでは
どのようにfor'ループ 'の条件の変更について' i)が(v.sizeを< - 1; '? – songyuanyao
ありがとうございました代替ソリューションはありませんか?チェックした値の一部をベクトルに保存したい場合は、それを返します。私は – noobcoder
に必要ならば、最後の要素を特別に保存するif文をチェックする必要があります。最後の要素で特別なことをする必要があるなら 'if if i == v.size()-1) 'for'ループの中にあります。 – songyuanyao