GCC Компилятор не сравнивает строки

Компилирую программу в VC++ и в GCC. Результаты получаются разные при сравнении строк. Вникать в суть кода необязательно: мы просто сравниваем определенные строки и если они равны высчитываем значение для двумерного вектора g. Строки формата std::string, но если компилятор VC++ позволяет сделать сравнение строк == подобным способом, то GCC - нет! Пришлось использовать преобразование std::string в char* с помощью c_str() и сравнивать strcmp(), но даже в этом случае не понятно почему GCC дает правильный результат только в половине случаев

vector <vector <double>> g(k, vector <double>(k, INT_MAX));
    for (int i = 0; i < k; i++) {
        for (int j = 0; j < v[i].neibs.size(); j++) {
            for (int p = 0; p < v.size(); p++) {
                if (strcmp(v[p].name.c_str(), v[i].neibs[j].c_str()) == 0) {
                    cout << i << " " << p << " = ";
                    g[i][p] = sqrt(pow(v[i].x - v[p].x, 2) + pow(v[i].y - v[p].y, 2));
                    cout << g[i][p] << endl;
                    break;
                }
            }
        }
    }

    for (int i = 0; i < g.size(); i++)
    {
        for (int j = 0; j < g[i].size(); j++)
        {
            cout << g[i][j] << " ";
        }
        cout << endl;
    }

Ответы (0 шт):