如何使用具有指向数组的指针的方法?

时间:2014-10-05 19:45:49

标签: c++ arrays pointers

我想创建一个方法,为参数提供一个指向数组第一个元素的指针,然后循环遍历数组寻找某个东西......

void MyClass::myMethod(T *x)
{
     // I know that *x points to the first entry in a properly defined array.
     // I want to cycle through this array, and try to find a member T of that array that
     // meets certain criteria.
     // I would then like to store a pointer to this T that meets my criteria.
}

2 个答案:

答案 0 :(得分:3)

您还需要显式传递数组的大小。然后你可以这样做:

for(T *current = x; current < x + count; ++current) {
    // do something with current, compare or whatever
}

另一种方法是使用索引表示法,如下所示。哪一个更好主要取决于您以后要如何准确访问数据。

for(int i = 0; i < count; ++i) {
    // current element is x[i]
    // pointer to current element is then x+i, or &x[i]
}

通常,您最好使用标准数组容器,使用迭代器实现算法。然后你的函数需要两个迭代器来定义它应该运行的范围,基本上是这样的:

template<typename Iterator>
void doSomething(Iterator begin, Iterator end) {
    for(; begin != end; ++begin) {
         // current element is *begin
    }
}

答案 1 :(得分:1)

而不是使用指针。创建一个向量并使用find_if返回感兴趣元素的迭代器(位置)并进行处理。