无法访问向量元素?

时间:2010-12-01 08:34:36

标签: c++ vector

我有这段代码

vector <int> a[100001];
a[1].push_back(1);
if( a[1][0] == 1)
      cout<<"OK!";

但是当我尝试访问1 [0]时,它说:

CXX0058: Error: overloaded operator not found

完整代码:

#include<stdio.h>
#include<vector>
using namespace std;
FILE *f=fopen("chei.in","r");
FILE *g=fopen("chei.out","w");
int t[100001],N,x,nr,k,d;
vector <int> a[100001];
int main(){
    fscanf(f,"%d",&N);
    for(int i=1;i<=N;++i)
    { fscanf(f,"%d",&x);
      for(k=0;k<a[i].size();++k){
               if( a[i][k]== x)
                   break;}
      if(k==0 || ( k==a[x].size() && a[i][k] == x )){
              t[i]=x;
              a[x].push_back(i);
      }
    }
for(int i=1;i<=N;i++){
        if(t[i]==i || t[i]==0)
            nr++;}
fprintf(g,"%d",nr);
return 0;
}

这是手表的屏幕截图: alt text

3 个答案:

答案 0 :(得分:1)

代码似乎没有任何问题。几乎每个人都认为你的意思是编译错误,但ybungalobill指出,visual studio的调试器不支持检索运算符的结果。

如果您的程序按照您的预期执行操作,则无需担心。即使您的调试器有点混乱,您的程序也可以很好地访问vector元素。

要允许调试器报告该值,请尝试像这样设置监视:((a[1])._Myfirst)[0] 根据此主题中的建议:http://social.msdn.microsoft.com/forums/en-US/vsdebug/thread/c09f4fe4-4783-4dbb-8d36-85489fa2a4ae

答案 1 :(得分:0)

我尝试使用g ++编译器,代码运行正常。

您使用的是哪种编译器?

答案 2 :(得分:0)

您使用的是一些无效的荒谬STL端口吗?试试a[1].at(0)