私はベクトルを検索する効率的な操作を書こうとしています。具体的には、A1> A2 & & A2 < A3の3つのint(A1、A2、A3)の存在を識別しています。条件を満たす特定のintのベクトルを効率的に検索する方法はありますか?
A {5,3,1,2,3}とすると、出力[3,1,2]、[3,2,3]、[5,1,3]、[5 、1,2]
明らかアプローチ三個のネストされたループを使用することであろう。明らかに、これは非常に非効率的である
int my_function()
{
std::vector<int> A {3,5,3,1,2,3};
for(auto IT1 = A.begin(); IT != A.end(); IT1++)
{
for(auto IT2 = IT1 + 1; IT2 != A.end(); IT2++)
{
for(auto IT3 = IT2 + 1; IT3 != A.end(); IT3++)
{
if(*IT1 > *IT2 && *IT3 > *IT2)
{
//Do stuff
}
}
}
}
}
を、単一ループでこのような動作を行う任意の公知の方法がありますか?または3つのネストされたループより効率的ですか?
'* IT1> * IT2'を' IT3'ループの外側に移動することができます。 – Jarod42
「A2> A2」? U Wot? – Bathsheba
すべて、または最初に有効なトリプレットが欲しいですか? – Jarod42