gpt4 book ai didi

c++ - 我认为迭代器的意义在于它们*是*它们的基础类型?

转载 作者:太空宇宙 更新时间:2023-11-04 14:47:24 24 4
gpt4 key购买 nike

我有以下内容

#include "stdafx.h"
#include <vector>
#include <iostream>
#include <algorithm>

enum EMode
{
a
,b
,c
};

void doTheThing(const EMode m)
{
std::cout << "Found mode " << m << std::endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
std::vector<EMode> modeList;

modeList.push_back(EMode::a);
modeList.push_back(EMode::c);

const auto mode = find_if(modeList.cbegin(), modeList.cend(), [](const EMode m)
{
return c == m;
});

if(modeList.end() != mode)
{
doTheThing(mode);
}
return 0;
}

问题是这段代码无法编译。

调用 doTheThing(mode) 时出现错误;

错误是:

cannot convert parameter 1 from 'std::_Vector_const_iterator<_Myvec>' to 'const EMode'

我不知所措,因为据我所知模式应该是一个 vector 迭代器,当我尝试使用它调用 doTheThing(mode) 时应该解析为 EMode;

我错过了什么?

最佳答案

迭代器与底层数据的类型不同。他们取消引用到那个类型。

代替

doTheThing(mode);

使用

doTheThing(*mode);

关于c++ - 我认为迭代器的意义在于它们*是*它们的基础类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47145427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com