【问题标题】:C++ Error: no viable conversion from returned value of typeC++ 错误:从类型的返回值没有可行的转换
【发布时间】:2016-12-01 18:08:28
【问题描述】:

我正在尝试将向量作为argument/parameter 传递给函数,以便print/return 的内容是list/array/vector,但是当我编译代码时,我遇到了这个错误:

代码如下:

#include <iostream>
#include <vector>
using namespace std;

int printVector(vector<int> vec_name){
  return copy(vec_name.begin(), vec_name.end(), ostream_iterator<int>(cout," ")); // returning contents of the array/vector
}

int main(){
  vector<int> array;

  for(int i=0;i<=10;i++){
    array.push_back(i); // inserting values to the array
  }

  printVector(array); // Printing the vector array

}

【问题讨论】:

  • 如果您希望他的代码按原样工作,请将 printVector() 上的 int 返回类型更改为 auto。如果您只想打印向量中的值,请不要使用复制,循环遍历向量并打印每个值。
  • 非常感谢@DanielCollier

标签: c++ function vector


【解决方案1】:

问题已解决:

用于循环以打印向量中的每个值:

void printVector(vector<int> &vec_name){
  for(int i=0; i<vec_name.size(); i++){
    cout << vec_name[i] << " ";
  }

}

【讨论】:

    【解决方案2】:
    void printVector(vector<int> const & vec_name)
    {
      for(size_t i = 0; i<vec_name.size(); i++){
        cout << vec_name[i] << " ";
      }
        cout << "\n";
    }
    

    【讨论】:

    • 为什么要加 const?我只是用 void 更改了 int 并删除了 return 语句,它可以工作
    • 参数名中的const 即(vector const & vector) 表示函数不能修改vector的内容,只能从中读取。函数名称中的 const 即 printVector(...) const 表示该函数不能更改类内的任何成员变量。
    • 在这种情况下没用,但是。在处理更大的代码库时,这是一个好习惯。
    • 第二个const 呢?
    猜你喜欢
    • 2023-01-25
    • 2021-02-28
    • 1970-01-01
    • 2021-12-18
    • 2019-05-18
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多