考虑以下代码:
#include <vector>
#include <iostream>
class num{
int a;
int b;
public:
num(int a_, int b_): a(a_), b(b_){}
int Geta(){return a;}
int Getb(){return b;}
};
int main(){
num a(2, 5);
num b(32, 654);
std::vector<num> nums;
nums.push_back(a);
nums.push_back(b);
std::vector<num>::iterator iter = nums.begin();
std::cout << iter->Geta()<< " " <<(*iter).Getb() << std::endl;
return 0;
}
这样可行,但我不知道使用迭代器iter->
或(*iter)
访问数组元素的方法更好。
我认为这个例子是两个都有效的特例。你能给我一个代码,可以看到差异(以及为什么)?
答案 0 :(得分:1)
一个可以产生真正差异的例子,就是你在迭代指针时,如下所示:
std::vector<num*> nums;
for (auto it = nums.begin(); it != nums.end(); it++) {
(*it)->getA();
}
我不知道如何仅使用->
来完成此任务。
答案 1 :(得分:1)
使用C ++ 11功能,我们还可以使用基于范围的for循环来访问元素,如下例所示。
var mydate = new Date(); mydate.setHours(3); mydate.setMinutes(0);
fecha.format(mydate, 'h:mm');
答案 2 :(得分:0)
->
用于通过pointer
访问对象成员变量和方法。
.
用于通过对象instance
访问对象成员变量和方法。
但容器迭代器就像指向某些数据结构的指针一样,在我看来(1.)更方便使用。
如果你有指针向量,你需要注意你有指针(迭代器)到指针(向量元素)并使用这种语法(*iter)->Geta();