gpt4 book ai didi

c++ - Javascript 的 "in"的 c++ 等价物是什么?

转载 作者:搜寻专家 更新时间:2023-10-31 01:17:39 26 4
gpt4 key购买 nike

我正在尝试以尽可能少的行检查数组中是否存在字符串示例:

string foo[] = {blah,blahhh,blahhhh}
string bar = "blah";

if (bar in foo){
cout << "true";
}else {
cout << "false";
}

最佳答案

C++ 中没有 this 关键字和 this 结构。您必须执行循环或使用查找功能。

http://www.cplusplus.com/reference/algorithm/find/

对于尝试做同样事情的其他人(因为过去有很多人问过我这个问题):char 数组和字符串文字(即 const char 数组)不能与相等或内置进行比较-in 运算符:比较两个 char 文字与比较两个指针相同。但是,您可以使用 std::string 类型或使用旧的 C 风格函数,如 strcmp。

如果您真的想避免编写太多行代码,只需编写另一个具有更多行的函数并用一行调用它。然后你可以把它放在一个漂亮的头文件中,并在你需要的时候包含它:)

#include <iostream>
#include <string>

using namespace std;

template<typename T, size_t N>
inline bool arraycontains(const T (&array)[N], const T& value)
{
for (size_t i = 0; i < N; ++i)
if (array[i] == value)
return true;
return false;
}

int main()
{
string foo[] = { "blah", "blahhh", "blahhhh" };
string bar = "blah";

cout << (arraycontains(foo, bar) ? "true" : "false");
return 0;
}

如果你不是数组而是一个指针,你应该使用一个函数,你可以在其中将大小作为参数传递。

现在,如果你的数组真的很大,我认为你不会喜欢对数组使用 O(n) 线性搜索,在那种情况下我知道你更愿意使用 std::map 或 std: :hash_map(请注意,hash_map 并非在所有版本的 STL 中都可用)。

std::map 在内部使用红黑树(或 AVL 树,具体取决于实现),因此查找操作在最坏情况下为 O(log n),比 O(n) 更快。

std::hash_map 在内部使用哈希表,最坏情况复杂度为 O(n),平均复杂度为 O(1),在实际应用中速度非常快。

关于c++ - Javascript 的 "in"的 c++ 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7897373/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com