Использование константной ссылки на векторный итераторC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Использование константной ссылки на векторный итератор

Сообщение Anonymous »

Мой тестовый код, как показано ниже; Суть логики заключается в том, что я неоднократно вызываю лямбда -чек , чтобы вернуть следующее самое низкое значение из случайно инициированного вектора целых чисел; Подпись проверки ожидает значения ссылки типа Const на итератор на вектор ints . Inside Check , ITER_NXT_LOW установлен на точку, изначально на аргумент CONST . Ожидается, что когда проверка заканчивает выполнение каждый раз, ITER_NXT_LOW будет содержать новое минимум, либо то же значение, что и значение, полученное путем дреферизации аргумента CONST . Однако, несмотря на использование концентрации const в подписи, по -видимому, проверьте всегда возвращает iter , который будет установлен на vi.end () , в результате следующего:
if ( *iter_nxt_low == *crvit_curr_low)
worne in ine ine in shapeed is ine speaked is ine in ine ine in ine in shapeed a ine in ine in shipeed_curr_low) . Аргумент изменяется из -за проверки при каждом вызове. Таким образом, мой код, кажется, нарушает семантику справки Const , как указано в предыдущем посте.#include
#include
#include

using std::vector;
using std::random_device;
using std::mt19937;
using std::uniform_int_distribution;
using std::cout;
using std::endl;

int func()
{
using IVI = vector::iterator;

vectorvI;

auto initVec = [&]()->void
{
constexpr unsigned MAXSZ = 10;
constexpr int MINRNG = -25;
constexpr int MAXRNG = 25;

random_device rd;
mt19937 gen(rd());
uniform_int_distributiondistr(MINRNG,MAXRNG);
for(size_t i = 0; i < MAXSZ; ++i)
{
vI.push_back(distr(gen));
}
return;
};

auto printVec = [&]()->void
{
for(auto i : vI)
{
cout

Подробнее здесь: https://stackoverflow.com/questions/797 ... r-iterator
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»