函数中的C++数组

函数中的C++数组,c++,arrays,iteration,C++,Arrays,Iteration,我想向函数发送一个数组 我是一名php程序员,所以我用php编写了一个示例,请将其转换为C++: function a($x) { foreach ($x as $w) print $w; } $test = array(1, 2, 3); a($test); 最好的方法是让函数使用一对迭代器:一个到范围的开始,一个到范围的结束,这实际上是一个超过范围的结束: template <typename ForwardIterator> void f(ForwardIterat

我想向函数发送一个数组

我是一名php程序员,所以我用php编写了一个示例,请将其转换为C++:

function a($x) {
    foreach ($x as $w) print $w;
}

$test = array(1, 2, 3);
a($test);

最好的方法是让函数使用一对迭代器:一个到范围的开始,一个到范围的结束,这实际上是一个超过范围的结束:

template <typename ForwardIterator>
void f(ForwardIterator first, ForwardIterator last)
{
    for (ForwardIterator it(first); it != last; ++it)
        std::cout << *it;
}
然后,您可以使用任何范围调用此函数,无论该范围来自数组、字符串或任何其他类型的序列:

// You can use raw, C-style arrays:
int x[3] = { 1, 2, 3 };
f(x, x + 3);

// Or, you can use any of the sequence containers:
std::array<int, 3> v = { 1, 2, 3 };
f(v.begin(). v.end());

更多信息,考虑一下自己。

< P>最好的方法是让函数使用一对迭代器:一个到范围的开始,一个到范围的结束,这个范围确实超出了范围的末端:

template <typename ForwardIterator>
void f(ForwardIterator first, ForwardIterator last)
{
    for (ForwardIterator it(first); it != last; ++it)
        std::cout << *it;
}
然后,您可以使用任何范围调用此函数,无论该范围来自数组、字符串或任何其他类型的序列:

// You can use raw, C-style arrays:
int x[3] = { 1, 2, 3 };
f(x, x + 3);

// Or, you can use any of the sequence containers:
std::array<int, 3> v = { 1, 2, 3 };
f(v.begin(). v.end());
对于更多的信息,考虑一下自己。

< P>试试这个方法:

int a[3];
a[0]=1;
a[1]=...

void func(int* a)
{
   for( int i=0;i<3;++i )
      printf("%d",a++);
}
尝试以下方法:

int a[3];
a[0]=1;
a[1]=...

void func(int* a)
{
   for( int i=0;i<3;++i )
      printf("%d",a++);
}
以及:

以及:


+1:特别是最后一句话。通过实验探索,C++可能成为一个噩梦。你确定链接正确吗?它指向boost::bind。@6502:Oops!谢谢你的提醒。复制和粘贴失败。你应该记住,有一些标准的库算法可以让你在每一步都传递迭代器和要做的事情,并为你组装循环。@Karl:有,但它们通常很难使用,它们对即将成为标准的C++0x lambda表达式更有用。[使用for_each和ostream_迭代器可以很容易地实现这个特定函数,但它通常并不那么简单。]+ 1:特别是对于最后一句话。C++可以成为一个恶梦,如果实验是正确的。你确定链接正确吗?它指向Booo::On: 6502:OOP!谢谢你的提醒。复制粘贴失败。你应该记住,存在标准的库算法,让你在每个迭代中通过迭代器和事情。步骤,然后为您组装循环。@Karl:有,但它们通常很难使用。它们对于即将成为标准的C++0x lambda表达式更有用。[这个特定函数可以很容易地使用for_each和ostream_迭代器来实现,但通常不是那么简单。]保罗C++:C++ C++是完全有效的,虽然它不是人们通常认为的C++语言。格雷戈:我知道,但是我的观点是,给C++新的例子很有误导性,它实际上只是C代码,它编译成C++,而不是更合适和更通用的C++。如果我有任何VOT,我会投票否决这个答案。今天,C++ C++ C++,保罗:R:这是完全有效的C++,虽然它不是人们通常认为的习惯C++。格雷戈:我知道,但是我的观点是,给C++新的例子非常容易误导,它实际上只是C代码编译成C++,而不是更合适的和惯用的C++。我今天还有票。
int* x = new int[3];
x[0] = 1;
x[1] = 2;
x[2] = 3;
functionWithArray(x, 3);