コードは次のようになり、次のように出力されます1
。
int main(int argc, char *argv[])
{
vector <const char*> vec = {"nima","123"};
vector <const char*> vec2 = {"nima","123"};
auto result = equal(vec.cbegin(), vec.cend(), vec2.cbegin());
cout << result << endl;
return 0;
}
を使用するだけで、2つのcスタイルの文字列が等しいかどうかをテストできることを知っていました(私が理解したように、オブジェクトではないstrcmp
ため)。char*
しかし、ここequal
にからの関数があります<algorithm>
。==
2の等式をテストできるように、演算子をオーバーロードしますchar*
か?
@Damonは、私が理解したように、同じ文字列リテラルを同じアドレスにマージするので、それらは等しいと言います。ただし、char*
別のアドレスで試しても、同じ結果が得られます。
int main(int argc, char *argv[])
{
char* k = "123";
char* b = "123";
vector <const char*> vec = {"nima"};
vector <const char*> vec2 = {"nima"};
cout << &k << endl;
cout << &b << endl;
vec.push_back(k);
vec2.push_back(b);
auto result = equal(vec.cbegin(), vec.cend(), vec2.cbegin());
cout << result << endl;
return 0;
}
結果は次のとおりです。
0x7fff5f73b370
0x7fff5f73b368
1