|
ポインタに対して operator[] を適用するとソース上の記述が不細工すぎるし、
途中から参照つかうくらいなら、最初から参照使えばいいと思うの心。
#include <vector>
#include <iostream>
struct pos {
pos(int x0, int y0) : x(x0), y(y0){}
int x;
int y;
};
void func0(std::vector<std::vector<pos> >& a) {
std::cout << a[0][0].x << ',' << a[0][1].y << std::endl;
std::cout << a[1][0].y << ',' << a[1][1].x << std::endl;
}
void func1(std::vector<std::vector<pos> >* a) {
std::cout << a->operator[](0)[0].x << ',' << a->operator[](0)[1].y << std::endl;
std::cout << a->operator[](1)[0].y << ',' << a->operator[](1)[1].x << std::endl;
}
int main() {
std::vector<std::vector<pos> > v;
std::vector<pos> row0;
row0.push_back(pos(1,2));
row0.push_back(pos(3,4));
v.push_back(row0);
std::vector<pos> row1;
row1.push_back(pos(-1,-2));
row1.push_back(pos(-3,-4));
v.push_back(row1);
func0(v);
func1(&v);
return 0;
}
|