下面我有一些代码,在最后的if语句中我想搜索字母 B 。但是,我想从找到 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");
}
}
答案 0 :(得分:0)
所以把第二个逻辑放在一个循环中,直到它到达vector
的末尾:
if( (it = find(secondOrder.begin(), secondOrder.end(),"P") ) != secondOrder.end() )
{
DCS_LOG_DEBUG("Found");
it1 = order.begin();
while ( (it1 = find(it1, order.end(), "B")) != order.end() )
{
//code here
//*it1 is the element you're looking for
}
}
else
{
DCS_LOG_DEBUG("NOT FOUND");
}
请注意,我使用的是迭代器,而不是索引。
另外,你的缩进很糟糕。
编辑:自从我回答问题后,我发现你改变了代码。逻辑保持不变。