【发布时间】:2019-05-22 20:47:45
【问题描述】:
在下面的代码中。
int main() {
list<int> m_list;
m_list.push_back(1);
list<int>::iterator it1 = (--m_list.end()); // it works, *it1 return 1;
list<int>::iterator it2 = (m_list.end() - 1); // compile issue?
}
有人解释为什么在列表 (m_list.end() - 1) 中有编译问题吗?为什么 (--m_list.end()) 可以? 如果我们换成其他的,vector,string。这两种情况都有效。
int main() {
vector<int> m_vector;
m_vector.push_back(1);
vector<int>::iterator it1 = (--m_vector.end()); // both work
vector<int>::iterator it2 = (m_vector.end() - 1); // both work
}
【问题讨论】:
-
list<T>没有随机访问迭代器。