次のコードは、オプションstd = C++ 11でコンパイルします。しかしx
はvector<vector<int>>
にありません。 adj
のタイプがvector<pair<int, vector<int>>>
の場合、それはよりよく一致します。
次のコードはvector<vector<int>>
のためにコンパイルされますが、x
は使用されません。
using std::vector;
using std::pair;
using std::cout;
using std::endl;
int reach(vector<vector<int> > &adj, int x, int y) {
vector<vector<int> >::iterator it;
vector<int>::iterator i;
for(it=adj.begin();it!=adj.end();it++)
{
// cout << (*it) << endl;
for (const auto& nexts: *it)
cout << nexts << ' ';
cout << endl;
for(i=(*it).begin();i!=(*it).end();i++)
{
cout << (*i) << endl;
if((*i)==y)
return 1;
}
}
return 0;
}
このコードは<vector<pair<int, vector<int>>>
でコンパイルし、x
を使用しています。それはあなたが使用するベクトルの最初の要素にアクセスするためにあなた
#include <vector>
#include <iostream>
using namespace std;
int reach(vector<vector<int> > &adj, int x, int y) {
vector<vector<int> >::iterator it;
vector<int>::iterator i;
for (it = adj.begin(); it != adj.end(); it++)
{
cout << (*(*it).begin()) << endl;
if (((*(*it).begin())) == x)
for (i = (*it).begin(); i != (*it).end(); i++)
{
cout << (*i) << endl;
if ((*i) == y)
return 1;
}
}
return 0;
}
int main()
{
}
のために働くことのコードを次のエラーに
を得ている理由ですint型ではないベクトルを指し*
using std::vector;
using std::pair;
using std::cout;
using std::endl;
int reach(vector<pair<int, vector<int> > > &adj, int x, int y) {
vector<pair<int, vector<int> > >::iterator it;
vector<int>::iterator i;
for(it=adj.begin();it!=adj.end();it++)
{
cout << it->first << endl;
if (it->first == x)
for(i=it->second.begin();i!=it->second.end();i++)
{
cout << (*i) << endl;
if((*i)==y)
return 1;
}
}
return 0;
}
'* it'は' vector 'であり、 'int'は1つではありません。 'cout'に送るか、それを整数' x'と比較するのはどういう意味ですか? –
おっと!私はそこに私の間違いを見る。くそー。ありがとう! – RAHUL