【问题标题】:How to fix overloading variables error for vectors in c++ [closed]如何修复 C++ 中向量的重载变量错误 [关闭]
【发布时间】:2019-08-04 16:41:03
【问题描述】:

我想实现向量,以便它们可以用作动态数组。我也想实现相同的功能,以便它自动检查向量的数据类型并执行操作。我无法解决各种运行时错误。

这是我的实现:

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

void arrayInsert(vector<char>, char a);
char arraySearch(vector<char>, char a);
void arrayDelete(vector<char>, char a);
void arrayInsert(vector<int>, int a);
int arraySearch(vector<int>, int a);
void arrayDelete(vector<int>, int a);

int main()
{
    int ch = 0;
    char a;
    int a;
    vector<int> arr;
    vector<char> arr;
    do
    {   
        do
        {
            cout<<"Arrays Program!!!\n\n";
            cout<<"1. Insert in the array\n";
            cout<<"2. Search a element in the array\n";
            cout<<"3. Delete from the array\n";
            cout<<"4. Exit\n";
            cout<<"\nEnter your choice:";
            cin>>ch;
            if(ch < 1 || ch > 4)
                cout<<"Invalid Choice!! Try again";
        }while(ch < 1 || ch > 4);

        switch(ch)
        {
            case 1: cout<<"Enter the element in the array:\n";
                    cin>>a;
                    arrayInsert(arr,a);
                    break;
            case 2: cout<<"Enter the element to be searched:";
                    cin>>a;
                    int flag = arraySearch(arr,a);
                    if(flag == NULL || flag == -1)
                        cout<<"\nElement Not Found!";
                    else
                    {
                        cout<<"\nElement found at index "<<flag;
                    }
                    break;
            case 3: cout<<"\nEnter element to be deleted:";
                    cin>>a;
                    arrayDelete(arr,a);
                    break;
            case 4: cout<<"Exiting Program!!!";
                    exit(0);
        }
    }while(ch >= 1 || ch <= 4);

    return 0;
}

void arrayInsert(vector<char> arr, char a)
{
    arr.push_back(a);
}

void arrayInsert(vector<int> arr, int a)
{
    arr.push_back(a);
}

char arraySearch(vector<char> arr, char a)
{
    for(int i = 0; i<arr.size(); ++i)
    {
        if(arr[i] == a)
        {
            return i;
        }
        else
        {
            return NULL;
        }

    }
}

int arraySearch(vector<int> arr, int a)
{
    for(int i = 0; i<arr.size(); ++i)
    {
        if(arr[i] == a)
        {
            return i;
        }
        else
        {
            return -1;
        }

    }
}

void arrayDelete(vector<char> arr, char a)
{
    for(vector<char>::iterator i = arr.begin(); i<arr.end(); ++i)
    {
        if(*i == a)
        {
            arr.erase(i);
        }
        else
        {
            cout<<"\nElement does not exist in the array!";
        }

    }
}

void arrayDelete(vector<int> arr, int a)
{
    for(vector<int>::iterator i = arr.begin(); i<arr.end(); ++i)
    {
        if(*i == a)
        {
            arr.erase(i);
        }
        else
        {
            cout<<"\nElement does not exist in the array!";
        }



    }
}

这些是错误: Error Screen Screenshot

【问题讨论】:

  • 在此处发布您的代码以重现问题,不接受链接。
  • 请将代码复制到问题本身。不是每个人都可以访问外部网站,并且链接可能会随着时间的推移而中断
  • @πάνταῥεῖ 这是一个很长的代码,这是我第一次遇到堆栈溢出。我其实不习惯这个界面。任何帮助将不胜感激。
  • @RishabhJain 将其缩小为minimal reproducible example,然后在此处发布。
  • @πάνταῥεῖ 先生,这会有所帮助吗?

标签: c++ vector


【解决方案1】:

您不能在同一范围内重新声明变量:

char a;
int a;

只需重命名它们。 Live

【讨论】:

  • 我想输入一个 char 或 int 并且可以是其中任何一个的输入,所以如果我重命名它们,我将如何实现它并将正确的变量传递给函数,即我怎么知道在哪个地方使用哪个变量。
  • @RishabhJain 您需要具有多种同时类型的变量是非常罕见的。我建议在继续之前检查您的程序要求和设计。
  • @RishabhJain as user4581301 建议您可以考虑重新设计您的应用程序
  • @RishabhJain 如果你坚持这种设计,你可能可以读取一个字符串并检查它是否有数字,然后决定做什么:stackoverflow.com/q/2346599/10933809stackoverflow.com/q/9642292/10933809 可能会有所帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-17
  • 2015-09-21
  • 1970-01-01
  • 2015-04-24
  • 2014-08-29
相关资源
最近更新 更多