Не можете получить доступ к элементу вектора? - PullRequest
0 голосов
/ 01 декабря 2010

У меня есть этот код

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 ]

1 голос
/ 01 декабря 2010

Кажется, что-то не так с кодом. Почти все думали, что вы имели в виду ошибку компиляции, но ybungalobill указал, что получение результатов оператора просто не поддерживается отладчиком visual studio.

Это не о чем беспокоиться, если ваша программа делает то, что вы ожидаете. Ваша программа может нормально обращаться к элементу вектора, даже если ваш отладчик немного запутался.

Чтобы разрешить отладчику сообщать о значении, попробуйте установить часы следующим образом: ((a[1])._Myfirst)[0] согласно рекомендации в этой теме: http://social.msdn.microsoft.com/forums/en-US/vsdebug/thread/c09f4fe4-4783-4dbb-8d36-85489fa2a4ae

0 голосов
/ 01 декабря 2010

Используете ли вы какой-то абсурдный порт STL, который не работает правильно?Попробуйте a[1].at(0).

0 голосов
/ 01 декабря 2010

Я пытался с компилятором g ++ и код работает нормально.

Какой компилятор вы используете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...