Сравнить векторный элемент со строковым элементом без инициализации вектора - PullRequest
0 голосов
/ 26 мая 2018

Почему мы можем сравнивать векторный элемент со строковым элементом без инициализации вектора?Как это работает?

#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 голосов
/ 26 мая 2018

Определение vector<char> a; инициализирует a пустым вектором.Таким образом, его размер равен 0.

Во время первой итерации внешнего цикла (i) внутренний цикл for(int j=0;j<a.size();j++) { поэтому никогда не выполняется и a[j] не оценивается.Код просто следует прямо к проверке if(f==0) и, основываясь на этом, добавляет что-то к вектору a.Будущие итерации внешнего цикла работают с непустым a и могут посмотреть на него.

Вы можете легко наблюдать это самостоятельно, проходя программу в отладчике, чтобы точно увидеть, в каком направлении течет управлениечерез код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...