我正在查看一些看起来像这样的代码
map<string, int>::iterator itr = mValue.find(inName);
Run Code Online (Sandbox Code Playgroud)
他们为什么定义迭代器.是不是可以这样说
int value = mValue.find(inName)
Run Code Online (Sandbox Code Playgroud)
谢谢.
Pla*_*ure 16
您可以通过取消引用迭代器来获取值(就好像它是一个指针).这将返回一个键/值对类型,其类型second具有以下值:
map<string, int>::iterator itr = mValue.find(inName);
int value = itr->second;
Run Code Online (Sandbox Code Playgroud)
返回迭代器的原因是因为end()无法找到匹配时返回迭代器:
map<string, int>::iterator itr = mValue.find(inName);
if (itr == mValue.end())
{
throw "No value could be found.";
}
int value = itr->second;
Run Code Online (Sandbox Code Playgroud)
希望这是有道理的.
int value = mValue.find(inName)->second;
Run Code Online (Sandbox Code Playgroud)
假设发现没有返回mValue.end()
| 归档时间: |
|
| 查看次数: |
11801 次 |
| 最近记录: |