同样的代码,vs2017可以编译,gc++不能编译

时间:2023-01-04 23:40:54

#include<iostream>
#include<vector>
#include<string>
#include<functional>

using std::vector;
using std::string;
const int ROWS = 4;
const int COLS = 4;

const vector<string> puzzle =
{
"this",
"wats",
"oahg",
"fgdt"
};
const vector<string> dct =
{
"this",
"two",
"fat",
"that"
};

int FindWord(vector<string> &fdWords, int x, int y, int direction);

int main(void)
{
int row = 0;
int col = 0;
int direction = 0;
vector<string> words{};
for (row = 0; row<ROWS; ++row)
{
for (col = 0; col<COLS; ++col)
{
for (direction = 0; direction<8; ++direction)
{
if (FindWord(words, row, col, direction))
{
for (const auto &str : words)
{
std::cout << str << std::endl;
}
}
}
}
}

return 0;
}
/*
*direction:
*           0 left to right
*           1 right to left
*           2 up to down
*           3 down to up
*           4 upper left to buttom right
*           5 buttom right to upper left
*           6 upper right to buttom left
*           7 buttom left to upper right
*
*/
int FindWord(vector<string> &fdWords, int x, int y, int direction)
{
//fdWords=vector<string>{};
fdWords.clear();
string tmp{};
int ret = 0;
while (x >= 0 && x < ROWS && y >= 0 && y < COLS)
{
tmp.push_back(puzzle[x][y]);
if (std::find(dct.cbegin(), dct.cend(), tmp) != dct.cend())
{
fdWords.push_back(tmp);
ret = 1;
}
switch (direction)
{
case 0:     //0 left to right
{
++y;
break;
}
case 1:     //1 right to left
{
--y;
break;
}
case 2:     //2 up to down
{
++x;
break;
}
case 3:     //3 down to up
{
--x;
break;
}
case 4:     //4 upper left to buttom right
{
++x;
++y;
break;
}
case 5:     //5 buttom right to upper left
{
--x;
--y;
break;
}
case 6:     //6 upper right to buttom left
{
++x;
--y;
break;
}
case 7:     //7 buttom left to upper right
{
--x;
++y;
break;
}
default:
{
std::cout << "Direction error" << std::endl;
return 0;
}
}
}
return ret;
}



这个代码是《数据结构和算法分析》的联系1.2猜字谜题。在vs2017,完美运行,但是g++,编译不过,请问为什么?

4 个解决方案

#1


g++ 提示std::find没有匹配函数

#2


#include <algorithm>
再试试。

#3


引用 1 楼 u014311648 的回复:
g++ 提示std::find没有匹配函数


包含 <algorithm> 头文件

http://en.cppreference.com/w/cpp/algorithm/find

#4


添加<algorithm> 头文件以后,楼主解决了吗?

#1


g++ 提示std::find没有匹配函数

#2


#include <algorithm>
再试试。

#3


引用 1 楼 u014311648 的回复:
g++ 提示std::find没有匹配函数


包含 <algorithm> 头文件

http://en.cppreference.com/w/cpp/algorithm/find

#4


添加<algorithm> 头文件以后,楼主解决了吗?