Я хотел написать программу, которая сравнивает vector
a
с vector
b
. И если vector
a
является дополнительным вектором vector
b
, то возврат true
еще false
. Например:Как сравнить векторы простым и эффективным способом?
vector a is 1,2,3
и vector b is 2,3,4,1,1,2,3,56
.
Таким образом, он должен находиться в смежном блоке. И я написал этот неприятный код, но я хочу это коротко написать. Я не хочу объявлять глобальные переменные для этой проблемы.
bool i_vec(vector<int>& a, vector<int> b)
{
vector<int> index (b.size(),0);
int counter = 0;
// if (a.size() <= b.size()) {
for (int i = 0; i < a.size(); i++) {
for (int j = 0; j < b.size(); j++) {
if (a[i]== b[j]) {
index[j] = 1;
}
}
}
for (int i = 0; i < index.size(); i++) {
if (index[i] == 1) {
for (int j = i; j < index.size(); j++) {
if (index[j] == 1) {
counter++;
}
}
if(counter == a.size()){
//cout<<"true"<<endl;
return true;
break;
}
else{
counter = 0;
cout<<"false"<<endl;
return false;
// continue;
}
}
}
// }
return 0;
}
'вернуться зЬй :: поиск (b.begin(), b.end(), a.begin(), a.end()) = b.end (!),' Короткий путь, и нет глобальных переменных. –
@IgorTandetnik Должна ли эта линия быть достаточной? – user4032883
Если вы хотите изучить эффективные реализации этого, вы можете прочитать: http://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm – Laserallan