C++ vector容器的迭代器 成员函数empty()
最近阅读<<C++ Primer>>时,遇到一道比较有意思的题目。题目如下:假设iter的类型是vector<string>::iterator,说明下面的表达式是否合法。*iter.empty()不难发现,成员访问运算符.的优先级高于解引用运算符 * ,所以该表达式可以理解成先运行iter的成员函数empty()。这时我就有了一个疑问,...
·
最近阅读<<C++ Primer>>时,遇到一道比较有意思的题目。题目如下:
假设iter的类型是vector<string>::iterator,说明下面的表达式是否合法。
*iter.empty()
不难发现,成员访问运算符 . 的优先级高于解引用运算符 * ,所以该表达式可以理解成先运行iter的成员函数empty()。这时我就有了一个疑问,vector的迭代器具有empty()成员函数吗?
首先给出答案,vector的迭代器没有empty()成员函数,但是vector具有empty()成员函数。
vector<int> vi = { 1,2,3,4,5 };
auto iter = vi.begin();
vi.empty();
iter.empty(); // Error!
vector<string> vs = { "Hello","World" };
auto iter = vs.begin();
vs.empty();
iter.empty(); // Error!
string s = "Hello EveryOne";
s.empty();
这里也留下了一个疑问,C++ vector的迭代器和vector类型的对象之间的区别是什么?
更多推荐
已为社区贡献1条内容
所有评论(0)