返回vector指针案例

void prog1_static(void)
{
    int pos = 9;

    // elem will hold the element's value
    vector<int> *elem;
    elem = fibon_seq2(pos);
    cout << elem->size() << endl;

    for (int in = 0; in < elem->size(); in++)
    {
        cout << elem[0][in] <<" ";
    }
    cout << endl;

    pos = 18;
    elem = fibon_seq2(pos);
    cout << elem->size() << endl;

    for (int in = 0; in < elem->size(); in++)
    {
        cout << elem[0][in] <<" ";    //error
    }
    cout << endl;
}

 

下面的函数返回elems的地址。可以返回静态对象的地址

 

通过去读取vector的返回值可以实现减少计算工作量的方法。
cout << elem[0][in] <<" ";
这个用法一定要注意,试了很就才发现。
elem是一个向量指针,这个指针指向某一个向量的,
因此类似于c语言中一个指针指向二位数组。

 

vector<int> *fibon_seq2( int size )
{
    const int max_size = 1024;
    static vector< int > elems;

    if ( size <= 0 || size > max_size )
    {
        cerr << "fibon_seq(): oops: invalid size: "
             << size << " -- can锟絫 fulfill request.\n";
        return 0;
    }

    // if size is equal to or greater than elems.size(),
    // no calculations are necessary ...
    for ( int ix = elems.size(); ix < size; ++ix )
    {
        if ( ix == 0 || ix == 1 )
        {
            elems.push_back( 1 );
        }
        else
        {
            elems.push_back( elems[ix - 1] + elems[ix - 2] );
        }
    }
    return &elems;
}

  

posted @ 2019-07-21 15:52  wdliming  阅读(762)  评论(0编辑  收藏  举报