だから私は、タプルのベクトルは、次のコードを使用して作られた座標を持っているを見つけるために見つけます'x'、 'o'、または '。'のいずれかで始まります。次のように使用のstd :: STDでのstd ::タプル::ベクトル
void displayBoard(vector<tuple<int,int>>& board, vector<tuple<int,int>>& p1, vector<tuple<int,int>>& p2){ // prints out board
cout << " a b c d e f g\n"; // top row
for (int i = 1; i < 43; i++){
if (i % 7 == 0) {
if (find(p1.begin(), p1.end(), board[i])) cout << "| x |\n";
else if (find(p2.begin(), p2.end(), board[i])) cout << "| o |\n";
else cout << "| . |\n";
} else {
if (find(p1.begin(), p1.end(), board[i])) cout << "| x ";
else if (find(p2.begin(), p2.end(), board[i])) cout << "| o ";
else cout << "| . ";
}
}
}
私int型メインになります。次は、と
int main() {
vector<tuple<int, int>> coordinates;
for (int i = 0; i < 7; i++){
for (int j = 0; j < 6; j++){
coordinates.push_back(make_tuple(i, j));
}
}
vector<tuple<int,int>> p1 = {make_tuple(0,1)};
vector<tuple<int,int>> p2 = {make_tuple(3,1)};
displayBoard(coordinates, p1, p2);
return 0;
}
テストコードが実行されますかどうかを確認するために座標として、私は(0,1)を使用し、(3,1) 。長い話を簡単に言えば、std :: findを使用して、タプル座標がp1またはp2のいずれかによって選択されたかどうかを調べ、それに応じて出力される文字列をフォーマットしたいと考えました。例えば、std::find_if(p1.begin(), p1.end(), make_tuple(2,2))
が真であれば、セルに 'x'を記入してください。コンパイルするときの問題は、私は次のエラーを取得された:iのstd ::ベクトル中のstd ::タプルを見つけるためにはstd :: find_ifを使用できるかどう
error: could not convert ‘std::find<__gnu_cxx::__normal_iterator<std::tuple<int, int>*, std::vector<std::tuple<int , int> > >, std::tuple<int, int> >((& p2)->std::vector<_Tp, _Alloc>::begin<std::tuple<int, int>, std::allocator<std::tuple<int, int> > >(), (& p2)->s td::vector<_Tp, _Alloc>::end<std::tuple<int, int>, std::allocator<std::tuple<int, int> > >(), (*(const std::tuple<int, int>*)(& board)->std::vector<_ Tp, _Alloc>::operator[]<std::tuple<int, int>, std::allocator<std::tuple<int, int> > >(((std::vector<std::tuple<int, int> >::size_type)i))))’ from ‘__ gnu_cxx::__normal_iterator<std::tuple<int, int>*, std::vector<std::tuple<int, int> > >’ to ‘bool’
注:iostream、文字列、タプル、ベクトル、アルゴリズムを含み、名前空間stdを使用しています。
http://en.cppreference.com/w/cpp/algorithm/find - 戻り値 –
を参照していただきありがとうございます。std :: find_ifを使用しても同様のエラーが発生しますが、 –
私は何も言わなかった'std :: find_if'(そのページは' std :: find'と 'std :: find_if'の両方についてです)を使って、' std :: find'について混乱していると思われるので、戻る。 –