打印values
不会按预期打印数组的内容,它将打印数组第一个元素的内存位置.
尝试这样的事情:
#include#include // ... copy(&values[0], &values[MAX], ostream_iterator(cout, " "));
对不起,我无法发布实际工作代码,但您的原始帖子是一堆乱七八糟的语法和语法错误.
编辑:为了让初学者更加完整,更容易理解和理解,我写了一个小程序,说明了实现这一目标的4种方法.
方法1使用copy
与ostream_iterator
我之前所做的那样.下面的方法2可能是最基本和最容易理解的.方法3是C++ 0x方法.我知道问题是标记为C++,但我认为添加它可能是有教育意义的.方法4是使用vector
和的C++方法for_each
.我已经实现了一个执行转储的仿函数.
分享和享受
#include#include #include #include #include using namespace std; struct dump_val : public unary_function { void operator()(int val) { cout << val << " "; } }; int main(){ int vals[5] = {1,2,3,4,5}; // version 1, using std::copy and ostream_iterator copy(&vals[0], &vals[5], ostream_iterator (cout, " ")); cout << endl; // version 2, using a simple hand-written loop for( size_t i = 0; i < 5; ++i ) cout << vals[i] << " "; cout << endl; // version 3, using C++0x lambdas for_each(&vals[0], &vals[5], [](int val) { cout << val << " "; } ); cout << endl; // version 4, with elements in a vector and calling a functor from for_each vector vals_vec; vals_vec.push_back(1); vals_vec.push_back(2); vals_vec.push_back(3); vals_vec.push_back(4); vals_vec.push_back(5); for_each( vals_vec.begin(), vals_vec.end(), dump_val() ); cout << endl; }