2017-12-12 2 views
-1

Was würde ich zu tun ist, wie ein std beginnen :: innerhalb des einfach std :: ab einem bestimmten Wert starten finden

std::vector<int>::iterator it; 
for (int a = 0; a < myvector.size(); a++){ 
    it = find(myvector.begin() + a, myvector.end(), myvector.at(a)); 
    std::cout << *it; 
} 

Vektor durch einen Vektor von einem bestimmten Ort finden kann ich nicht füge im Suchbefehl 'a' hinzu. Wie würde ich den gleichen Effekt erzielen?

+0

Wie beurteilen Sie die * bestimmten Ort entscheiden *? –

+0

In diesem Code versucht es durch das int 'a' bestimmt zu werden, aber das funktioniert nicht. –

+4

Ich verstehe dein Problem nicht. Sie suchen nach dem 'a'-ten Punkt, beginnend mit dem' a'-ten Punkt. Du wirst es immer finden. –

Antwort

0

Wenn Sie für einen Wert suchen, nachdem sie zuerst aufgetreten Sie dies versuchen könnten:

auto it2 = std::find(
    std::next(std::find(std::begin(myvector), std::end(myvector), val)), 
    std::end(myvector), val); 
} 

es zuerst das erste Vorkommen des Wertes findet, und beginnt wieder von der nächsten Position zu suchen.

könnten Sie std::next() verwenden ein Iterator wie zu erhöhen:

it = find(std::next(myvector.begin(), a), myvector.end(), myvector.at(a)); 
Verwandte Themen