代码是这样的,它输出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;
}
我知道我只能通过 using 来测试两个 c 风格的字符串是否相等strcmp
(因为char*
它不是我理解的对象)。但这里equal
有一个来自 的函数<algorithm>
。它是否使运算符重载,==
以便它可以测试两个的相等性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