C ++ цикл For для двух векторов <string>и его позиция в строке - PullRequest
0 голосов
/ 15 октября 2018
using namespace std;

int main() {
    vector<string> data={"Hello World!","Goodbye World!"};
    for (vector<string>::iterator t=data.begin(); t!=data.end(); ++t) 
    {
        cout<<*t<<endl;
    }
    return 0;
}

Но у меня есть два вектора, и мне нужно преобразовать их значения в строки в определенной позиции, например:

vect = lineget3(nazev_souboru);
vect2 = lineget4(nazev_souboru);

for (a = vect.begin(); a < vect.end(); a++)
{
    string str = *a;
    string str2 = *b;?
}

И я не знаю, как сделать str2 = * b (позицияvect2).Как сделать цикл для двух векторов в определенной позиции?

Я не могу сделать это

for (a = vect.begin(); a < vect.end(); a++)
{
    for (b = vect2.begin(); b < vect2.end(); b++)
    {
        string str = *a;
        string str2 = *b;
    }
}

Мне нужен только один цикл для этого.Спасибо.

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Вы можете использовать ranges::view::zip для объединения пары диапазонов в один, а затем использовать структурированные привязки для разделения элементов

for (auto [a, b] : ranges::view::zip(vect, vect2))
{
    // use a and b
}
0 голосов
/ 15 октября 2018

Если векторы имеют одинаковую длину, вы можете сделать:

for (auto a = vect.begin(), b = vect2.begin(); a < vect.end() && b < vect2.end(); ++a, ++b) {
    string str = *a;
    string str2 = *b;
}

Если они имеют разный размер, это не будет работать цикл не будет повторяться по всем элементамбольший вектор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...