Он должен вернуться с одним элементом unikVardi
с первым элементом vardi
Вы нажимаете первый элемент с этими двумя строками:
vector<string> unikVardi;
unikVardi.push_back(vardi[0]);
Теперь вы сравнивая с этими двумя vector
for (int i = 1; i < vardi.size(); i++){
// unikVardi.size() == 1
for(int k = 0; k < unikVardi.size(); k++){
if (vardi[i] != unikVardi[k]){
unikVardi.push_back(vardi[i]);
}
}
return unikVardi;
После одной итерации он go вернется к вызывающей станции. :-P
См. С main ():
#include <iostream>
#include <bits/stdc++.h>
#include <string>
using namespace std;
vector<string> findUniqueWords(vector<string> vardi){
vector<string> unikVardi;
unikVardi.clear();
unikVardi.push_back(vardi[0]);
for (int i = 1; i < vardi.size(); i++) {
for(int k = 0; k < unikVardi.size(); k++) {
cout<<vardi[i]<<" Outside: "<<unikVardi[k]<<endl;
if (vardi[i] != unikVardi[k]){
cout<<vardi[i]<<" "<<unikVardi[k]<<endl;
unikVardi.push_back(vardi[i]);
}
}
return unikVardi;
}
}
int main()
{
vector<string> g1, g2;
string str = "This";
for (int i = 1; i <= 5; i++)
g1.push_back(str);
g2 = findUniqueWords(g1);
for (int i = 0; i < g2.size(); i++)
cout<<g2.size()<<endl;
return 0;
}
Это даст вам This
, потому что он имеет только один элемент. Этот элемент равен vardi[1]
второму элементу. Таким образом, он не будет go до if
l oop. Вернемся к main()
с одним элементом.
Надеюсь, теперь вы поймете, что происходит в вашей функции.