2014-11-16 24 views
0

我想在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_ 

這是我List.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]

任何一個可以告訴我,爲什麼它會顯示一個隨機數,而不是插入的價值,以及如何修改代碼

+1

你稱之爲「插入」,但該代碼不會*插入* .... –

回答

0

你應該改變這一行:

arr->insert(1, 3); 

到:

arr->insert(0, 3);