将vector元素与字符串元素进行比较而不初始化向量

时间:2018-05-26 11:12:23

标签: c++ vector

为什么我们能够在不初始化向量的情况下将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;
}

1 个答案:

答案 0 :(得分:1)

定义vector<char> a;a初始化为空向量。因此,它的大小为0。

在外部(i)循环的第一次迭代期间,内部循环for(int j=0;j<a.size();j++) {因此从不执行,并且不评估a[j]。代码只是简单地跟随if(f==0)检查,并在此基础上向向量a添加内容。外循环的未来迭代使用非空a进行处理,并可以查看它。

您可以通过在调试器中单步调试程序来轻松地观察到这一点,以准确了解控件在代码中的流向。