带有 .begin() 和 .end() 的 C++ const char

标签 c++ arrays iterator namespaces const-char

所以我有一个看起来像这样的程序:

const char *Argv[] = {"stuff", "stuff1", "stuff3"};

bool pass = xxxxx::yyyyy(Argv.begin(), Argv.end(), Tri);

我认为这是非法的,因为 const char * 不是用户定义的类型。但是,我不确定如何解决这个问题。我需要更改第一行还是第二行?还是两者兼而有之?

最佳答案

Argv 是一个数组(const char*),是的,你不能调用 begin() end() 如您的代码所示,数组没有此类成员函数。相反,您可以使用 std::beginstd::end

const char *Argv[] = {"stuff", "stuff1", "stuff3"};
bool pass = xxxxx::yyyyy(std::begin(Argv), std::end(Argv), Tri);

如果您改用其他标准容器,例如 std::vectorstd::array,那么您可以调用成员函数 begin()end() 。请注意,即使对于这些容器,您仍然可以对它们使用 std::beginstd::end,这与调用它们的成员函数 begin 具有相同的效果()end()

关于带有 .begin() 和 .end() 的 C++ const char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62135867/

相关文章:

c++ - Visual Studio中所谓的 "Frames"是什么?

javascript - Angular foreach - 空值

java - 迭代数组列表并打印数组中的每个元素

generics - 如何从函数返回过滤器迭代器?

c++ - C++ 中的嵌套函数替代方案

c++ - 如何在 C++ 中静态转换 2D vector size() (size_t 到 int)?

C++:在基类中使用带有泛型虚函数的异步回调

javascript - 如何使用包含其键名的变量来访问对象属性

javascript - 按字母排序数组将无法正确运行

c++ - 如何检查字符串是否包含标点符号c++