Ниже у меня есть код и в последнем операторе if я хочу найти букву B . Тем не менее, я хочу искать с позиции, где P был найден и увеличивать, пока не найдет B , а затем, когда он находит B Я хочу выполнить метод .
Я использовал комментарий в своем коде, чтобы показать вам, куда код пойдет.
Итак, шаги
- Найдите положение 'P'
- Увеличивать с позиции 'P', пока вы не найдете 'B' и метод выполнения
- Продолжайте увеличивать до тех пор, пока не достигнете конца вектора, и если вы снова увидите букву 'B', повторите тот же метод снова и так далее
Код, который у меня пока есть:
std::vector<std::string> order;
std::vector<std::string>::iterator it;
std::vector<std::string> tempOrder;
order.push_back("V"); //V
order.push_back("I");//F
order.push_back("F");//I
order.push_back("N");//O
order.push_back("D");//O
order.push_back("W");//O
order.push_back("O");//O
order.push_back("P");//O
order.push_back("Y");//O
order.push_back("B");//O
order.push_back("L");//O
order.push_back("B");//O
order.push_back("R");//O
order.push_back("X");//O
if(order.front() == "V")
{
it = find(order.begin(), order.end(), "I");
++it;
std::string o = *it;
DCS_LOG_DEBUG("NEXT 0 " << o);
DCS_LOG_DEBUG("NEXT " << *it);
int i = find(order.begin(), order.end(), "N") - order.begin();
int pos = i;
DCS_LOG_DEBUG("POS " << pos);
for(int i1 = 0; i1 < pos; i1++)
{
//DCS_LOG_DEBUG("IN LINE " << order[i1]);
if(order[i1] == "D" || order[i1] == "W" || order[i1] == "O" || order[i1] == "P")
{
DCS_LOG_DEBUG("It matches one of the above incorrect");
break;
}
else
{
DCS_LOG_DEBUG("OK");
break;
}
}
std::vector<std::string>secondOrder;
copy(order.begin() + pos + 1, order.end(), std::back_inserter(secondOrder));
if(find(secondOrder.begin(), secondOrder.end(),"P")- secondOrder.begin())
{
DCS_LOG_DEBUG("Found");
int i1 = find(order.begin(), order.end(), "P") - order.begin();
//HERE IS WHERE THE CODE WILL GO
}
else
{
DCS_LOG_DEBUG("NOT FOUND");
}
}