C++ 如何检查矩阵的任何一行是否包含所有';A';s

C++ 如何检查矩阵的任何一行是否包含所有';A';s,c++,arrays,for-loop,if-statement,multidimensional-array,C++,Arrays,For Loop,If Statement,Multidimensional Array,我一直在尝试这样做,但问题是最终结果总是有一些错误或遗漏。 我有很多if语句,我想看看是否可以通过使用for循环来减少它 char matrix[3][3] = { {'A','A','A'},{'B','A','B'},{'C','A','C'} }; if (matrix[0][0] == 'A' && matrix[0][1] == 'A' && matrix[0][2] == 'A') { cout << &q

我一直在尝试这样做,但问题是最终结果总是有一些错误或遗漏。 我有很多if语句,我想看看是否可以通过使用for循环来减少它

char matrix[3][3] = {
    {'A','A','A'},{'B','A','B'},{'C','A','C'}
};

if (matrix[0][0] == 'A' && matrix[0][1] == 'A' && matrix[0][2] == 'A') {
            cout << "Found!" << endl;
        }
char矩阵[3][3]={
{'A','A','A'},{'B','A','B'},{'C','A','C'}
};
如果(矩阵[0][0]='A'&矩阵[0][1]='A'&矩阵[0][2]='A'){

cout您可以使用标准算法方便地表达这一点:

if (std::any_of(std::begin(matrix), std::end(matrix), 
                [](auto const & row) {
                    return std::all_of(std::begin(row), std::end(row), 
                                       [](char c) {
                                           return c == 'A';
                                       });
                }))
{
    std::cout << "Found";
}
if(std::开始(矩阵),std::结束(矩阵)中的任何一个,
[](自动常量和行){
返回std::all_of(std::begin(行),std::end(行),
[](字符c){
返回c=='A';
});
}))
{

std::你可以像
bool row\u same=true;那样(尺寸i=0;i@Joe手动写出你所有的
if
语句-我假设你已经有了它们,只是复制粘贴它们并更改了索引。然后看看索引在你的if语句中是如何变化的,例如,哪些从0变为2?哪些保持不变?然后将其编码到for循环中。我敢打赌,你的橡皮鸭w我来解释一下这个问题。你试过向你的橡皮鸭解释你的代码了吗?如果没有,为什么不解释?(;矩阵[0][0]='A'&矩阵[0][1]='A'&矩阵[0][2]='A';)
这确实有效,谢谢你。不过,对我来说,现在看起来有些太超前了。@Joe没关系,你可以在有时间的时候学习这些技术。请注意,
是一个非常有用的标题,有很多有用的工具,所以一定要彻底研究它。
if (std::any_of(std::begin(matrix), std::end(matrix), 
                [](auto const & row) {
                    return std::all_of(std::begin(row), std::end(row), 
                                       [](char c) {
                                           return c == 'A';
                                       });
                }))
{
    std::cout << "Found";
}
namespace rs = std::ranges;
if (rs::any_of(matrix, [](auto const & row) {
        return rs::all_of(row, [](char c) {
            return c == 'A';
        });
    }))
{
    std::cout << "Found";
}