检查特定值的整数向量 ==“比较”运算符可用于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);
}
答案 0 :(得分:1)
如果您需要确定是否有一个等于给定值的向量元素,那么您可以使用标准算法std::find
或std::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