【问题标题】:Why is there a conversion error in this code? [closed]为什么这段代码会出现转换错误? [关闭]
【发布时间】:2020-11-26 05:29:25
【问题描述】:

我只是在制作一个程序,这会发生 我不明白这样的皈依者在哪里。

这个程序应该查看输入字符串中每个字符的数量。它正在进行中,但我已经创建了一个 for 循环来处理输入。

错误: 11:30: error: conversion from 'int' to non-scalar type 'std::vector<int>' requested

代码:

// Example program
#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main()
{
  string input;
  vector<int> letters = (26,0);
  vector<char> alpha = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
  
    cin >> input;
    for(int i = 0; i < input.size();i++){
        for(int j = 0; j < alpha.size(); j++){
            if(input[i]==alpha[j]){
                letters[j] ++;
            }
        }
    }
  
  
}

【问题讨论】:

  • 这是一个错字。 (26, 0) 仅计算为 0。您正在尝试分配 vector&lt;int&gt; letters = 0; 您需要波浪形括号而不是括号。
  • vector test_scores_b (10,75);在我的 IDE 上工作
  • vector&lt;int&gt; test_scores_b (10,75) 调用std::vector&lt;int&gt; 的构造函数,它接受两个整数。它不同于std::vector&lt;int&gt; letters = (10, 75);
  • 哦,抱歉,这就是原因,
  • Herestd::vector&lt;T&gt; 的构造函数。它读起来就像是编程语言参考文档,但这个网站尤其对社区来说是非常宝贵的帮助。

标签: c++ compiler-errors type-conversion


【解决方案1】:

您的错误是您尝试使用 assign 调用带有 2 个参数的构造函数,而没有明确显示 2 个整数的含义。您可以选择 2 种实现方式:

vector<int> letters = vector<int>(26, 0);//here you call copy constructor

vector<int> letters(26,0); // here you call constructor with 2 parameters

编译器只是不知道你写“vector letters = (26,0);”是什么意思它可能是一切——从只有 1 个 int 数到隐式转换到你的类;所以你应该明确地显示它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 2010-10-19
    • 2018-02-23
    • 1970-01-01
    • 2020-07-26
    • 2011-12-27
    相关资源
    最近更新 更多