可能的范围问题c ++

时间:2012-12-06 07:04:08

标签: c++ oop vector

#include<iostream>
#include<vector>
using namespace std;
class t{
    public:
        t();
        void updateSize();
        int getSize();
        void insert();
        int get(int a);
    private:
        int size;
        vector<int> v;

};

t::t(){
    size =0;
}
void t::updateSize(){
    size++;
}
int t::getSize(){
    return size;
}
int t::get(int a){
    return v[a];
}
 void t::insert(){
    v.push_back(size);

    ++size;
}

int main(){
   t xa;
   xa.insert();
   xa.insert();
   xa.insert();
       xa.insert();
   cout<<xa.get(3);//expect to output 3 but instead outputs 0


   return 0;
}

这个代码应该在每次调用insert时增加大小,并将一个带有该大小值的整数放在该大小的相同索引处的向量中。但由于某种原因,它没有将更新的大小放入我的向量中。

2 个答案:

答案 0 :(得分:4)

你正在插入3个元素,但是你正在读第4个元素(因为索引是基于0的。)

答案 1 :(得分:0)

您发布的程序将打印“3”。证明阅读您的代码。