Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2020, 19:56   #1
Александр222
Пользователь
 
Регистрация: 15.04.2020
Сообщений: 59
Вопрос C++. Разделение на файлы

Как можно разделить данный код на файлы? (.h, .cpp)
Когда использовал классы, в .h находился сам класс, то есть class Name{... А в .cpp была его реализация. А как похожее разделение сделать здесь, если такое вообще возможно?

Код:
#include<iostream>
#include "Functor.h"

template<class ForwardIterator1, class ForwardIterator2>
ForwardIterator1 search_end(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2){
    if (first2 == last2) return last1;  

    ForwardIterator1 ret = last1;

    for (; first1 != last1;  ++first1) {
        ForwardIterator1 it1 = first1;
        ForwardIterator2 it2 = first2;
        while (*it1 == *it2) {    
            ++it1;
            ++it2;
            if (it2 == last2) {
                ret = first1;
                break;
            }
            if (it1 == last1) return ret;
        }       
    }
    return ret;
}

class Functor{
 public:
             bool operator()(int i, int j) {
                     return i == j;
              }
};

template<class ForwardIterator1, class ForwardIterator2, class Predicate>
ForwardIterator1 search_end_if(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2, Predicate Functor){
   
    ForwardIterator1 ret = last1;

    for (; first1 != last1; ++first1) {
        ForwardIterator1 it1 = first1;
        ForwardIterator2 it2 = first2;

        while (Functor(*it1, *it2)) {
            ++it1;
            ++it2;
            if (it2 == last2) {
                ret = first1;
                break;
            }
            if (it1 == last1) return ret;
        }
    }
    return ret;
}

          
int main() {

    int* c;
    int a[10] = { 1, 26, 33, 40, 0, 1, 26, 83, 41, 50 };
    int b[3] = { 1, 26 };
  
    c =  search_end(a, a + 10, b, b + 2);

    if (c == a + 10) std::cout << "Not found" << std::endl;
    else std::cout << "Found on position number " << (c - a) << std::endl;

    std::cout<<"_________________________________________________________________________" << std::endl;
   
    int* n;
    int x[12] = { 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 4, 4 };
    int y[3] = { 2, 4, 4 };

    search_end_if(x, x + 12, y, y + 3, functor());
    functor f;
    n = search_end_if(x, x + 12, y, y + 3, f);
   
    if (n == x + 12) std::cout << "\nNot found" << std::endl;
    else std::cout << "\nFound on position number " << (n - x) << std::endl;
  
    return 0;
}
Александр222 вне форума Ответить с цитированием
Старый 31.10.2020, 21:36   #2
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 973
По умолчанию

Александр222, код шаблона по файлам не разносится

то есть - в один отдельный заголовочник можно вынести, а в h и cpp разнести не выйдет
Алексей1153 вне форума Ответить с цитированием
Старый 31.10.2020, 21:43   #3
Александр222
Пользователь
 
Регистрация: 15.04.2020
Сообщений: 59
По умолчанию

Алексей1153, Спасибо
Александр222 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разделение Word на отдельные файлы pacha.i Microsoft Office Word 5 05.10.2020 16:33
разделение столбца на два apelsun SQL, базы данных 4 20.05.2012 21:32
разделение программы на файлы и последующая компиляция little_greg Visual C++ 8 21.01.2011 21:46
Разделение. Maksim_27_10 Общие вопросы C/C++ 8 21.04.2010 20:40