如何从返回向量的函数中获取向量值?

Posted

技术标签:

【中文标题】如何从返回向量的函数中获取向量值?【英文标题】:how to get the vector value from function returning a vector? 【发布时间】:2016-06-12 06:52:11 【问题描述】:

在 VS 2015 中编译程序时出现错误:

在没有适当的 operator() 或将函数转换为指针函数类型的情况下调用类类型的对象

它用红色标记对函数的调用,该函数返回一个向量。代码如下:

struct punct 
int x, y, val;
;

int koli4estvoShagov = 0;
int arr[100][100];
int n, m;

vector<punct> shag(int x, int y, int nrShaga) 
punct shag;
shag.val = arr[x][y];
shag.x = x;
shag.y = y;
vector<punct> shagi;
shagi.push_back(shag);

if (nrShaga == koli4estvoShagov - 1) 
    return shagi;

else if (x == m - 1) 
    vector<punct> shagVNiz = shag(x, y + 1, nrShaga + 1);
    shagi.insert(shagi.end(), shagVNiz.begin(), shagVNiz.end());
    return shagi;

else if (y == n - 1) 
    vector<punct> shagVPravo = shag(x + 1, y, nrShaga + 1);
    shagi.insert(shagi.end(), shagVPravo.begin(), shagVPravo.end());
    return shagi;

else 
    vector<punct> shagVPravo = shag(x + 1, y, nrShaga + 1);
    vector<punct> shagVNiz = shag(x, y + 1, nrShaga + 1);
    vector<punct> max;
    if (sum(shagVNiz) > sum(shagVPravo))
        max = shagVNiz;
    else
        max = shagVPravo;

    shagi.insert(shagi.end(), max.begin(), max.end());
    return shagi;


具体看函数“shag”的调用。

【问题讨论】:

【参考方案1】:
vector<punct> shag(int x, int y, int nrShaga) 
punct shag;

局部变量shag与函数同名。

【讨论】:

以上是关于如何从返回向量的函数中获取向量值?的主要内容,如果未能解决你的问题,请参考以下文章

如何从函数返回向量引用?

为啥我的函数向返回未定义的对象数组添加键和增量值

如何实现从模板参数返回向量的模板函数?

为啥可以从函数返回“向量”?

如何在 C++ 中通过引用返回向量

递归向量返回