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;
}