【发布时间】:2020-05-22 20:31:42
【问题描述】:
我正在编写一个函数CreateGrid(),它试图将std::string 和二维std::array 作为参数,并将std::string 中的各个字符放入数组中。数组的其余部分(如果有空格)应按字母顺序填充字母字符 A-Y(含),前提是它们尚未出现在 std::string 中。每个字符在最终返回的数组中只能出现一次。
所以输入string keyword = "HELO";
输出将是:
赫尔 ○○○○ C D F注意字符“E”只出现一次。
我正在尝试使用std::find() 来测试字母 AY(故意排除 Z)中的所有字符是否已经在数组中,由于关键字,如果不是,则在插入它之前没有重复.我收到一个编译错误。
代码:
array<array<char,3>,3> CreateGrid(std::string keyword, array<array<char,3>,3> myArray)
{
char letterToFind = 'A';
for (int row = (keywordLength/3); row < 3; row++ )
{
for (int column = (keywordLength % 3); column < 3; column++)
{
auto it = std::find(begin(myArray), end(myArray), letterToFind);
if ( it == end(myArray) ) // value not in array
{
myArray[row][column] = letterToFind; //insert
}
letterToFind++;
}
}
return myArray;
}
int main()
{
array<array<char,3>,3> myArray = { {'H','E','L'}, {'O','+','+'}, {'+','+','+'} };
CreateGrid("HELO", myArray);
return 0;
}
我收到此行的编译错误:
auto it = std::find(begin(myArray), end(myArray), letterToFind);
消息:请参阅使用 [_InIt=std::_Array_iterator如何检查 char 是否已经在数组中,如果没有,则添加它?
【问题讨论】:
标签: c++