C ++"请求会员' push_back'

时间:2014-09-23 20:52:54

标签: c++ vector

这是我的代码:

void MyWork::computeDistances()
{

int column = sentence1.size();
int row = sentence2.size();
//int min = 0;

dist.resize(column);

for (int i = 0; i < column; i++){
    dist[i].resize(row);
}

for (int i = 0; i < column; i++){
    for (int j = 0; j < row; j++){
        cout << "A" << endl;
        if (i == 0){

            if (sentence1[j] == sentence2[i]){
                dist[i][j].push_back(0);

在主文件中,我已将2D矢量声明为:

vector<vector<int> > dist;

然而,我收到错误:

MyWork.cpp:30:17: error: request for member ‘push_back’ in ‘(&((MyWork*)this)->MyWork::dist.std::vector<_Tp, _Alloc>::operator[] [with _Tp = std::vector<int>, _Alloc = std::allocator<std::vector<int> >, std::vector<_Tp, _Alloc>::reference = std::vector<int>&, std::vector<_Tp, _Alloc>::size_type = unsigned int](((unsigned int)i)))->std::vector<_Tp, _Alloc>::operator[] [with _Tp = int, _Alloc = std::allocator<int>, std::vector<_Tp, _Alloc>::reference = int&, std::vector<_Tp, _Alloc>::size_type = unsigned int](((unsigned int)j))’, which is of non-class type ‘int’

我认为这与通过引用传递有关,但我不确定是什么。谢谢你的帮助!

3 个答案:

答案 0 :(得分:2)

与你如何通过论证无关。

distvector<vector<int> >

dist[i]vector<int>

dist[i][j]int,您打电话给operator[]。那不会起作用。

我相信你想要dist[i][j] = 0;

答案 1 :(得分:1)

   dist[i][j].push_back(0);

dist[i][j]的类型为 int ,它没有push_back成员函数。

这取决于你真正想做什么,一个简单的改变可能是:

  dist[i][j] = 0; 

答案 2 :(得分:0)

根据你的定义,dist是int的向量向量,因此dist [i]是int的向量,因此dist [i] [j]是int。你无法回击int。