C ++结构/向量编译问题

时间:2016-03-24 00:43:00

标签: c++ vector struct reference

我遇到了以下编译错误,我正在努力修复:

错误C3867:'std :: vector> :: at':函数调用缺少参数列表;使用'& std :: vector> :: at'创建指向成员的指针

我的代码是:

struct coord_type {
    int x;
    int y;
};

struct elements_type {
    vector <coord_type> my_coord;
    coord_type item2;
    coord_type item3;
};

错误的功能是:

void position_time(data_type data)
{
    int        i;
    coord_type position;

    for (i = data.elements.my_coord.size() - 1; i > 0; i--) {
        position = data.elements.my_coord.at[i];
    }
}

知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

at是一个函数,它将索引作为所需数据的索引。您有两个选择:

  • [i]更改为(i)(因为这是一项功能)
  • 使用传统的数组表示法(data.elements.my_coord[i]
  • 访问索引

答案 1 :(得分:1)

如果要遍历向量,最好使用迭代器,这里使用reverse迭代器更好。

void position_time(data_type data)
{
    coord_type position;
    for_each(data.elements.my_corrd.rbegin(), data.elements.my_corrd.rend(), [&](coord_type& ct){position = ct;});
}