是的。可以辦到。但首先,我想告訴你簡單而優雅的解決方案:
std::vector<int> v = {....};
int to_search = ...;
for (auto elem : v)
{
if (e == to_search)
{
// do something
}
}
你確定這是不是你的實際需要?
我們您的實際需求:
template <class It, class T>
It find_next(It begin, It end, T to_search)
{
for (auto it = begin; it != end; ++it)
{
if (*it == to_search)
return it;
}
return end;
}
std::vector<int> v = {....};
int to_search = ...;
auto it = v.begin();
while ((it = find_next(it, v.end(), to_search)) != v.end())
{
// do something with *it
}
你真要使用索引,可以很容易地適應:
int find_next(const std::vector<int>& v, int begin, int end, int to_search)
{
for (int i = begin; i != end; ++i)
{
if (v[i] == to_search)
return i;
}
return end;
}
std::vector<int> v = {....};
int to_search = ...;
int from = 0;
while ((from = find_next(v, from, v.size(), to_search)) != v.size())
{
// do something with v[from]
}
現在,如果你真的想生的循環,而不是功能,當然這也可以做:
std::vector<int> v = {....};
int to_search = ...;
int from = 0;
while (true)
{
for (; from < v.size(); ++from)
{
if (v[from] == to_search)
break;
}
if (from == v.size())
break;
// do something with v[from]
}
我希望你能看到每個迭代我呈現給大家基本上做同樣的事情會變得更加複雜。
所以我真的會重新考慮,如果我給你看的第一個不是你想要的。
免責聲明:沒有編制,沒有測試
是的。你爲什麼認爲你不能在循環中使用std :: cout? – MrPromethee
我想讓它走出循環,然後回去,但從前一個計數器繼續。我必須編輯這個問題,我很抱歉。 – parvin
如果你需要幫助,你將不得不向我們展示實際的代碼。 – MrPromethee