将矢量值与整数进行比较

时间:2014-09-13 17:40:36

标签: c++ vector

检查特定值的整数向量 ==“比较”运算符可用于vector == vector 我们可以这样做吗 矢量[I] ==值 我试过这个

    if(SolutionMatrix[i]==0)

这里SolutionMatrix是整数类型向量

    vector<int> SolutionMatrix;   

任何人都可以帮我改编这个。  代码是

for(int index=0;index<SolutionMatrix.size();i++)
  {

        vector<int> b(SolutionMatrix[i].size());
        vector<int> c(SolutionMatrix[i].size());
        int j,k;
        j=k=0;

            for(i=0;i<SolutionMatrix[i].size();i++)
            {

                    if(SolutionMatrix[i]==0)
                    {
                         b[j++]=i;

                    }               
                    else
                    {

                        c[k++]=i;
                    }

            }
            b.resize(j);
            c.resize(k);
}

1 个答案:

答案 0 :(得分:1)

如果您需要确定是否有一个等于给定值的向量元素,那么您可以使用标准算法std::findstd::any_of

例如

if ( std::find( SolutionMatrix.begin(), SolutionMatrix.end(), 0 ) != SolutionMatrix.end() )
{
   std::cout << "0 is found" << std::endl;
}

或者你可以使用相同的范围来声明。例如

bool found = false;

for ( int x : SolutionMatrix )
{
   if ( found = x == 0 ) break;
}

if ( found ) 
{
   std::cout << "0 is found" << std::endl;
}

编辑:至于我的回答后出现的代码,我认为没有任何意义。在外部循环中,您定义了本地向量b和c,它们将在每次迭代中被销毁并重新创建。

您可以使用与声明相同的范围。

例如

#include <iostream>
#include <vector>
#include <algorithm>

int main() 
{
    std::vector<int> a = { 1, 0, 2, 0, 0, 4, 5 };

    std::vector<int> b;
    b.reserve( a.size() / 2 );
    std::vector<int> c;
    c.reserve( a.size() / 2 );

    size_t i = 0;

    for ( int x : a )
    {
        if( x == 0 )
        {
            b.push_back( i );
        }
        else
        {
            c.push_back( i );
        }

        ++i;
    }

    for ( int x : a ) std::cout << x << ' ';
    std::cout << std::endl;

    for ( int x : b ) std::cout << x << ' ';
    std::cout << std::endl;

    for ( int x : c ) std::cout << x << ' ';
    std::cout << std::endl;

    return 0;
}

输出

1 0 2 0 0 4 5 
1 3 4 
0 2 5 6