gpt4 book ai didi

c++ - 为什么我不能写container.iterator?

转载 作者:行者123 更新时间:2023-12-01 15:10:23 25 4
gpt4 key购买 nike

为什么我不能这样写代码:

int main()
{
std::map<std::string, int> m;

m.iterator it = m.find("five");
//~~~^~~~~
// nor like this:
m::iterator it = m.find("eight");
}

最佳答案

您无法编写m.iterator,因为iterator不是数据成员或成员函数,因此无法对其使用成员访问运算符(即operator.)。 (iterator是一个嵌套的类型名称。)
您无法编写m::iterator,因为m不是类名或 namespace 名称,因此不能与范围运算符(即operator::)一起使用。
您可以使用auto(从C++ 11开始)来推导类型。

auto it = m.find("five"); // the type would be std::map<std::string, int>::iterator 
或通过 decltype获取类型(从C++ 11开始)。
decltype(m.begin()) it = m.find("five");   // the type would be std::map<std::string, int>::iterator 
decltype(m)::iterator it = m.find("five"); // same as above

关于c++ - 为什么我不能写container.iterator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63032743/

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