为什么我们能够在不初始化向量的情况下将vector元素与string元素进行比较?它是如何工作的?
#include <bits/stdc++.h>
using namespace std;
int main() {
int t;
cin>>t;
while(t--) {
string x; cin>>x;
vector<char> a;
for(int i=0;i<x.length();i++) {
int f=0;
for(int j=0;j<a.size();j++) {
if(a[j]==x.at(i)) {
f=1;
break;
}
}
if(f==0)
a.push_back(x.at(i));
}
if(a.size()==2)
cout<<"YES\n";
else
cout<<"NO\n";
}
return 0;
}
答案 0 :(得分:1)
定义vector<char> a;
将a
初始化为空向量。因此,它的大小为0。
在外部(i
)循环的第一次迭代期间,内部循环for(int j=0;j<a.size();j++) {
因此从不执行,并且不评估a[j]
。代码只是简单地跟随if(f==0)
检查,并在此基础上向向量a
添加内容。外循环的未来迭代使用非空a
进行处理,并可以查看它。
您可以通过在调试器中单步调试程序来轻松地观察到这一点,以准确了解控件在代码中的流向。