插入方法重载

Insert method overloading

本文关键字:重载 方法 插入      更新时间:2023-10-16

我正在尝试重载 C++ 中的 Insert() 方法。这是我想出的代码下面是我的 List.h 文件

#ifndef _LIST_H_
#define _LIST_H__
#include "stdafx.h"
#include <cstdlib>
#include <iostream>
class List
{
public:
    List(size_t capacity = 5); // constructor - allocates dynamic array
    ~List(); // destructor
    void insert(size_t position, int value);
    void printArray();//Printing Array elements
private:
    void resize(size_t new_size); // allocate new larger array
    int *data_; // dynamic array
    size_t size_; // size of dynamic array
    size_t capacity_; // capacity of dynamic array
};
inline int& List::operator [] (size_t pos)
{
    if (pos >= 0 && pos <= size_ - 1)
    {
        return data_[pos];
    }
}
#endif _LIST_H_

这是我的列表.cpp文件

#include "stdafx.h"
#include "List.h"
#include <iostream>
using namespace std;
List::List(size_t capacity)
{
    data_ = new int[capacity];
    capacity_ = capacity;
    size_ = 0;
}
List::~List()
{
    cout << "delete ";
    delete[] data_;
}
void List::insert(size_t position, int value) {
    if (size_ == capacity_)
    {
        resize(2 * capacity_);
    }
    if (position >= 0 && position <= capacity_ - 1)
    {
        data_[position] = value;
        size_++;
    }
}
void List::printArray()
{
    size_t  i;
    for (i = 0; i < size_; i++)
    {
        cout << data_[i]<<" ";
    }
}
void List::resize(size_t new_size)
{
    int * temp;
    size_t i;
    capacity_ = new_size;
    temp = new int[capacity_];
    for (i = 0; i <= size_; ++i)
    {
        temp[i] = data_[i];
    }
    delete[] data_;
    data_ = temp;
}

主方法文件

using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    //List d,a;
    List *arr,*temp;
    arr = new List(10);
    temp = new List();
    arr->insert(1, 3);
    cout << "Printing array list after inserting: " << endl;
    arr->printArray();
}
Output:
Testing Insert method:
Printing array list after inserting:
-842150451

Expected:
Testing Insert method:
Printing array list after inserting:
3

假设如果我有像arr =[1,2,3,4]; arr->insert(2,-2)这样的数组.输出应arr= [1,2,-2,3,4]

任何人都可以告诉我为什么它显示随机数而不是插入的值以及如何修改代码

您应该更改此行:

arr->insert(1, 3);

到:

arr->insert(0, 3);