检查整个向量是否为零

Nic*_*ios 5 c++ vector

如何检查向量中的每个元素是否为零而不通过它们循环?

当前我有(以半MEW形式):这试图做的是检查最终向量的所有三个值(它的三维...年.)是否全为零,(在原点),或者它是否等于所有三个值上的任何前一个向量.

        siteVisited = false; counter = 0;  
        while (counter < (walkHist.back().size()-1))
        {
            tdof = 1;
            while (tdof <= dimensions)
            {
                if (walkHist.back().back().at(tdof-1) == 0)
                {
                    siteVisited = true;
                }
                else
                {
                    siteVisited = false;
                    break;
                }
                tdof++;
            }
            if (siteVisited)
            {
                goto visited;
            }

            tdof = 1;
            while (tdof <= dimensions)
            {
                if (walkHist.back().back().at(tdof-1) == walkHist.back().at(counter).at(tdof-1))
                {
                    siteVisited = true;
                }
                else
                {
                    siteVisited = false;
                    break;
                }
                tdof++;
            }
            if (siteVisited)
            {
                                visited:
                ...
            }
            counter++;
        }
Run Code Online (Sandbox Code Playgroud)

jua*_*nza 25

这取决于循环的含义,但这可行:

bool zeros = std::all_of(v.begin(), v.end(), [](int i) { return i==0; });
Run Code Online (Sandbox Code Playgroud)

  • “all_of”算法还有一个额外的好处,即如果其中一个元素不为 0,它可能会提前退出,并节省一些不必要的检查。 (2认同)