PDA

View Full Version : مشکل با vector و pair



root88
جمعه 03 دی 1389, 10:42 صبح
با سلام،
من یه بردار دارم که تو هر خونه اون اشیایی از نوع pair<int , int> ذخیره کردم. مثلا تو خونه 1 بردار دوتایی های (1,2)، (1,3)،. برنامه می خواد مقدار (1,2) رو دوباره ذخیره کنه اما چون ایم مقدار قبلا وجود داشته نباید ذخیره بشه. نمی دونم چطور به با iterator به first و second دسترسی داشته باشم. لطفا کمک کنید. این تابع گفته شده است. تابع ReadFile سطر به سطر ( به جز سطر اول که تعداد یالها و گره ها رو نشون میده)می خونه و در خونه های بردار ذخیره میکنه.



#define Max 100
#define MP(x,y) make_pair((x),(y))
int E,V, dist[Max], parent[Max];
bool visit[Max];
vector<pair<int,int>>edges[Max];
void change(string s,list<int> &l)
{

int sum=0,x;
int c=s.length();
for(int i=0;i<c;i++)
{
if(s.at(i)!=' ')
sum=0;
while(s.length()!=i && s.at(i)!=' ')
{
x=s.at(i)-48;
sum=sum*10+x;
i++;
}
l.push_back(sum);
}
}
void ReadFile()
{
int i=0;
list<int>l;
list<int>::iterator it;
string st="";
ifstream infile ;
char ch[100];
infile.open("test.txt",ios::in);
if(!infile.is_open())
{cout<<"could not open file."; exit(1);}
infile.getline(ch,100);st=ch;
change(st,l);it=l.begin();
V=*it; E=*(++it);l.clear();
while(infile.getline(ch,100))
{
i++;
st=ch;
change(st,l);
for(it=l.begin();it!=l.end();it++)
{
edges[i].push_back(MP(*it,1));
edges[*it].push_back(MP(i,1));
}
l.clear();

}
infile.close();


}


دوستان من یه وکتور دارم از نوع Pair<int,int> و توی هر خونه از این وکتور یه تعداد Pair ذخیره شده. باید برای هر خونه از این وکتور تعداد pairهایی که تو اون خونه ذخیره شده رو حساب کنه. من یه دستور مثل check[u].size() نوشتم اما کار نمیکنه. لطفا منو اهنمایی کنید.

root88
دوشنبه 06 دی 1389, 08:12 صبح
لطفا یکی منو راهنمایی کنه. من یه وکتور به نام edges دارم از نوع pair<int,int>. و توی هر خونه از وکتور چندتا از این دوتایی ها دارم. می خوام برای هر خونه تعداد دوتایی هایی که توش هستن رو محاسبه کنم، نمی دونم چه جوری.این دستور رو مینویسم اما اشتباهه



edges[i].size();