2010-12-01 6 views
0

У меня есть этот кодНе удается получить доступ к элементу вектора?

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

+10

Не обижайтесь, но тот факт, что вам нужен ответ быстро на самом деле не относятся нас. На самом деле, заявив, что такие вещи, скорее всего, заставят людей не отвечать вообще. – ereOn 2010-12-01 08:37:12

+0

(GCC компилирует этот штраф.) Есть ли `vector & tmp (a [1]); if (tmp [0] == 1) ... `работает? – dennycrane 2010-12-01 08:39:30

+0

Мне нужно это быстро, потому что я участвую в онлайн-конкурсе, и мне нужно решить проблему, но я столкнулся с этой проблемой ... Конкурс заканчивается через 1 час, так что это поможет мне много, если я смогу решить это до тех пор. – Cristy 2010-12-01 08:40:28

ответ

1

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

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

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

0

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

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

0

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