Задать вопрос
zenz
@zenz

Исходный файл не находит соответствующую функцию, как исправить?

Шаблон в заголовочном файле:

//"remove_copys.h"
template <class In, class X> void remove_copys(In begin, In end, In bk(In), const X& x) 
{
	In cont;
	if (*begin != x)
		bk(cont);
	++begin;
};


Исходный файл:

#include<vector>
#include<iostream>
#include<string>
#include "remove_copys.h"

using namespace std;

int main() {
	int x;
	vector<int> vec = { 1, 2, 3, 0, 0, 0, 4 };
	vector<int> vec1 = { 4, 0, 2, 3, 4 };
	
	remove_copys(vec.begin(), vec.end(), back_inserter(vec1), 0);
	for (vector<int>::iterator it = vec1.begin(); it != vec1.end(); ++it)
		cout << *it << endl;
}
  • Вопрос задан
  • 76 просмотров
Подписаться 1 Простой 9 комментариев
Пригласить эксперта
Ответы на вопрос 1
@FoxOne
Мне кажется, что у вас в remove_copys не хватает цикла... (cont не инициализирован, end не используется..., что-то не дописано)
Может надо что-то типа
template <class In, class X>
void remove_copys(In begin, In end, In bk(In), const X& x) 
{
while( begin!=end ) {
  if (*begin != x)
    bk(begin);
  ++begin;
  }
};

B чем не угодил штатный std::copy_if ?

Или это вообще не компилируется? Тогда ищите проблему в путях для include, где что лежит и прочее
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы