用于在C++中访问数组的代码混淆

2 c++ syntax stl c++11

我正在浏览我在网上找到的代码,并发现用于访问向量数组的代码有点不合适(读取混淆).

数组graphvisited声明如下:

vector< int > graph[ MAXN + 1 ], graphT[ MAXN + 1 ], sorted;
bool visited[ MAXN + 1 ];
Run Code Online (Sandbox Code Playgroud)

进一步在程序中,访问如下:

if ( !visited[ graph[ S ][ i ] ] ) {         //--->>>???
            dfs1( graph[ S ][ i ] );
        }
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解释一下如何visited [ graph[ S ][ i ] ]正确访问visited数组的语法?此外,还有其他更简单的方法来访问它吗?

注意:S只是任何随机变量,有价值,比方说1.代码的实际链接在这里.我在谈论第9,10,27,28和29行.当然,代码编译成功并生成所需的输出.谢谢.

Rei*_*ica 5

这不是C++ 11,因为没有使用C++ 11功能,也没有任何模糊处理.

您可以按如下方式重写代码,假设它graph是非const的:

std::vector<int> & g0 = graph[S];
int & g1 = g0[i];
if (!visisted[g1])
  dfs1(g1);
Run Code Online (Sandbox Code Playgroud)