12
#include <iostream>
#include <iterator>
using namespace std;
void print(int ia[])
{
    int *p = begin(ia);
    while(p != end(ia))
        cout<<*p++<<'\t';
}

int main()
{
    int ia[] = {1,2,3,4},i;
    print(ia);

    return 0;
}

P ia の最初の要素へのポインター。「エラー: 'begin(int*&)' c++ の呼び出しに一致する関数がありません」と言った理由 ありがとう!:)

4

3 に答える 3

13

内部print()では、変数iaは配列ではなくポインターであるためです。begin()ポインターを呼び出すのは意味がありません。

于 2013-07-25T02:54:03.233 に答える
7

ポインタに対して関数beginとfree 関数を使用していますが、これは許可されていません。end

C ++ 11で同様のことができますintializer_list

//g++ -std=c++0x test.cpp -o test
#include <iostream>
#include <iterator>
using namespace std;
void print(initializer_list<int> ia)
{
    auto p = begin(ia);
    while(p != end(ia))
        cout<<*p++<<'\t';
}

int main()
{
    print({1,2,3,4});   
    return 0;
}
于 2013-07-25T03:30:16.773 に答える