函数返回类型是 C++ 中的向量

Posted

技术标签:

【中文标题】函数返回类型是 C++ 中的向量【英文标题】:function return type is vector in c++ 【发布时间】:2011-08-25 19:43:40 【问题描述】:

我想在我的代码中将向量作为函数的返回类型,例如,

class SocketTransportClient
    void sendData(RMLInfoset *info)
        vector<unsigned long>::iterator blockIterator;
        vector<unsigned long> vectBlock=info->getRML(); // error :  error C2440: 'initializing' : cannot convert from 'std::vector<_Ty>' to 'std::vector<_Ty>'
    


class RMLInfoset  
    vector<unsigned int> RMLInfoset::getRML()
        return  vectDataBlock;
    

但它显示错误'无法从'std::vector<_ty>'转换为'std::vector<_ty>'' 所以请任何人帮助我, 谢谢。

【问题讨论】:

【参考方案1】:

嗯,部分问题在于您实际上从未在Myfun 中构建vector v

std::vector<int> Myfun() 
  std::vector<int> v;
  return v;

编辑:

问题编辑后,还有一个小问题——你需要将向量声明为std::vector&lt;int&gt;,而不仅仅是vector&lt;int&gt;,如上。这是因为 vector 位于 std 命名空间中。

【讨论】:

在您最后一次编辑之后,我会发布一个答案,但 Greg Hewgill 已经足够好了。阅读他的回答。 :)【参考方案2】:

您的函数被声明为返回vector&lt;unsigned int&gt;,但您实际上试图将结果分配给vector&lt;unsigned long&gt;。这些是不同的类型,并且不兼容分配。更改您的函数声明:

  vector<unsigned long> RMLInfoset::getRML()

您还需要更改vectDataBlock 的类型。基本上,决定您要使用哪种矢量类型并保持一致

【讨论】:

【参考方案3】:

你有三个错误

1) 你没有使用#include &lt;vector&gt;

2) 应该是std::vector&lt;int&gt; v; 而不是vector&lt;int&gt; v;

3) 您没有发布所有代码。

【讨论】:

以上是关于函数返回类型是 C++ 中的向量的主要内容,如果未能解决你的问题,请参考以下文章

从 C++ 中的函数返回向量或数组

如何从 C++ 中的函数返回向量?

将向量传递和返回到 C++ 中的函数

C++ 从函数调用的多次返回中构建字符串向量的最佳方法

在 Cython 中包装返回复杂类型向量的函数

C++中的指针和向量