做这个的最好方式是什么.
例如.我有
Vectortemp = {0,0,1,0,2}
我想获得temp中第一个非零值的索引.所以在这种情况下我想回答2.
我已经这样做了,寻找更好的方法..
int index = -1; for(int round=0; round < temp.size(); round++) { if(temp[round] > 0) { index = round; break; } }
谢谢,Gunjan
您可以使用:
distance( begin(temp), find_if( begin(temp), end(temp), [](auto x) { return x != 0; }));
如果找不到该项,这将返回数组的大小.您将需要#include
和C++ 14编译模式.在C++ 11则必须更换auto
带有int
或任何类型的容器包含.
这是一个可重复使用的lambda版本,可能稍微容易阅读.需要C++ 14.