Я только что удалил предыдущее сообщение с похожим вопросом, потому что мой пример был не очень понятным, поэтому я пытаюсь снова.
Я создал простой класс с именем SportsSchedules.cpp. Этот класс хранит 4 элемента;sportType, TeamName, город и количество побед.Я создал «спортивный вектор» объектов SportsSchedules.Я хочу запустить sportsVector через цикл, и для каждого вида спорта я хочу создать новый вектор.Каждый созданный субвектор должен содержать только уникальный sportType.
В идеале этот sportsVector должен выполняться в цикле и вставлять каждый объект в свой репозитивный субвектор до тех пор, пока он не станет пустым (я думаю)это код из моего основного:
#include <iostream>
#include "SportsSchedules.h"
#include <vector>
#include <string>
#include <map>
#include <algorithm>
#include <functional>
bool sportType( std::string type);
int main (int argc, const char * argv[])
{
SportsSchedules *theSport;
theSport = new SportsSchedules("Football", "Chicago", "Bears", 7);
std::vector<SportsSchedules*> *sportsVector = new std::vector<SportsSchedules*>();
sportsVector->push_back(theSport);
theSport = NULL;
theSport = new SportsSchedules("Football", "Chicago", "Bears", 7);
sportsVector->push_back(theSport);
theSport = NULL;
theSport = new SportsSchedules("Baseball", "Boston", "RedSox", 62);
sportsVector->push_back(theSport);
theSport = NULL;
theSport = new SportsSchedules("Football", "GreenBay", "Packers", 15);
sportsVector->push_back(theSport);
theSport = NULL;
theSport = new SportsSchedules("Basketball", "Portland", "Trailblazers", 60);
sportsVector->push_back(theSport);
theSport = NULL;
theSport = new SportsSchedules("Football", "Seattle", "Seahawks", 7);
sportsVector->push_back(theSport);
theSport = NULL;
theSport = new SportsSchedules("Baseball", "Oakland", "A's", 67);
sportsVector->push_back(theSport);
std::cout<<"Test the SportsSchedules Vector "<<std::endl;
std::vector<SportsSchedules*>::iterator itr;
for(itr = sportsVector->begin(); itr != sportsVector->end(); ++itr ){
std::cout<<(*itr)->getSportType()<<" "<<(*itr)->getCity()<<" "<<(*itr)->getTeamName()<<" "
<<(*itr)->getNumWins()<<std::endl;
}
return 0;
}
bool trackType( std::string type){
SportsSchedules * sptPtr;
if(sptPtr->getSportType()== type)
return true;
else
return false;
}
Функция bool была из более ранней попытки попробовать remove_copy_if.Я продолжал получать ошибку компилятора об отсутствии указателя int или указателя на функцию.Не уверен, что это то, что мне нужно, так как он создает черновую печать всех векторных индексов.Я хочу что-то, что подтолкнет - выскочит, если это возможно. Кто-то также предложил использовать карту или мульти-карту, но я не совсем понял это
Спасибо