یافتن موقعیت reverse_iterator - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

یافتن موقعیت reverse_iterator

0 امتیاز
سلام.

برای پیدا کردن اندیس reverse_iterator از std::distance استفاده می کنم خطا میده چه راهی پیشنهاد میدید؟
سوال شده اردیبهشت 16, 1396  بوسیله ی hojat1 (امتیاز 875)   12 69 99

1 پاسخ

+2 امتیاز
 
بهترین پاسخ

به مثال زیر دقت کنید:

 

#include <algorithm>
#include <iostream>
#include <vector>

int main()
{
    auto v = std::vector<int> { 1, 2, 3 };
    auto rit = std::find(v.rbegin(), v.rend(), 3);
    if (rit != v.rend()) {
        auto idx = std::distance(begin(v), rit.base()) - 1;
        std::cout << idx;
    } else
        std::cout << "not found!";
}

 

شما برای اینکار باید از متد base استفاده کنید که iterator حالت عادی را دریافت کنید موقعیتش هم طبق شکل زیر حساب میشه.(یکی ازش کم میشه)

 

std::reverse_iterator

پاسخ داده شده اردیبهشت 16, 1396 بوسیله ی farnoosh (امتیاز 8,362)   20 44 59
انتخاب شد خرداد 25, 1396 بوسیله ی hojat1
...