Я сделал программу, связанную с очередями с минимальным приоритетом, иногда мне нужен список stl как фундаментальная структура, а иногда - векторная структура stl - PullRequest
0 голосов
/ 03 августа 2020

// Настоящая проблема в том, что когда я работаю со списком, мне нужно прокомментировать инструкцию для вектора // и наоборот (TBH - это шаблон для контейнера):

string strType;
strType = typeid(container).name();
strType = strType.substr(11, 4);
if (strType=="list") {
    // TBH.sort(compa); because I am working with vectors
} else if (strType == "vect") {
    typedef typename container::iterator Position;
    std::sort(TBH.begin(), TBH.end(), compa2);
}
std::cout << "Sort Done\n";

/ / Имеет c ++ способ избежать этой ситуации без комментирования инструкций, выдавших ошибку: // Ошибка C2039 'sort': не является членом 'std :: vector '

1 Ответ

0 голосов
/ 03 августа 2020

вы можете создать function для этого и перегружать его:

template<class T>
void sort(std::vector<T>&& v){
    TBH.sort(compa);
}
template<class T>
void sort(std::list<T>&& l){
    typedef typename container::iterator Position;
    std::sort(TBH.begin(), TBH.end(), l);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...