Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我的代码不断抛出错误id。我想知道为什么?_C++_Templates - Fatal编程技术网

C++ 我的代码不断抛出错误id。我想知道为什么?

C++ 我的代码不断抛出错误id。我想知道为什么?,c++,templates,C++,Templates,此错误发生在while语句条件中的“合并项不适合列表”中。我无法确定代码是怎么回事。一切都是正确的。while循环中的所有if语句都具有错误id #include "OrderedList.h" using namespace std; template < typename DataType, typename KeyType > OrderedList<DataType, KeyType>:: OrderedList ( int maxNumber ) :List

此错误发生在while语句条件中的“合并项不适合列表”中。我无法确定代码是怎么回事。一切都是正确的。while循环中的所有if语句都具有错误id

#include "OrderedList.h"
using namespace std;

template < typename DataType, typename KeyType >
OrderedList<DataType, KeyType>:: OrderedList ( int maxNumber )

:List<DataType>(maxNumber)

{}

template < typename DataType, typename KeyType >
void OrderedList::<DataType,KeyType>:: insert ( const DataType &newDataItem)
throw ( logic_error)

{
    if (size >= maxSize)
        throw logic_error("list is full fool");

    if (binarySearch(newDataItem.getKey(), cursor))
            dataItem[cursor] = newDataItem;

    else
    {
        for ( int j= size-1 ; j > cursor; --j)
            dataItems[j+1] = dataitems[j];
            ++cursor;
        dataItems[cursor] = newDataItem;
        ++size;
    }
}

template < typename DataType, typename KeyType >
bool OrderedList< DataType, KeyType> :: retrieve ( const KeyType& searchKey, DataType &searchDataItem)

{
    int holdCursor = cursor;

    bool result = false;

if (binarySearch(searchKey, cursor))
{
    searchDataItem = dataItems[cursor];
    result = true;
}
else
{
    cursor = holdCursor;
    result = false;
}
    return result;
}

template < typename DataType, typename KeyType >
void OrderedList<DataType, KeyType>:: replace ( const DataType &newDataItem)
throw (logic_error)

{
    if (size==0)
        throw logic_error("listEmpty");

    if (newDataItem.getKey() == dataItems[cursor].getKey() )
        dataItems[cursor] = newDataItem;
        else
        {
            remove();
            insert(newDataItem);
        }
}


template < typename DataType, typename KeyType > void OrderedList<DataType, KeyType>:: showStructure () const

{
    if (size == 0)
        cout << "Empty List" << endl;
    else
    {
        cout << "size = " << size
        << "  cursor = " << cursor << endl;
        for ( int j = 0 ; j < maxSize ; ++j)
            cout << endl;
        for (int j = 0; j < size ; ++j)
        {
            if( j == cursor)
            {
                cout << "[" << dataItems[j].getKey() << "]\t";
            }
            else {
                cout << dataItems[j].getKey() << "\t";
            }
        }
        cout << endl;
    }
}


template < typename DataType, typename KeyType >
bool OrderedList < DataType, KeyType >:: binarySearch (KeyType searchKey, int &index)

{
    int low = 0
    high = size - 1;
    bool result;

    while (low <= high)
    {
        index = (low + high ) / 2;
        if ( searchKey < dataItems[index].getKey())
            high = index - 1;
        else if( searchKey > dataItems[index].getKey())
            low = index + 1;
        else
            break;
    }
    if ( low <= high )
        result = true;
    else
    {
        index = high;
        result = false;
    }
    return result;
}

template < typename DataType, typename KeyType>
void OrderedList< DataType, KeyType>:: merge ( const OrderedList<DataType, KeyType>& fromL )
throw (logic_error)

{
    int j = size - 1,
        k = fromL.size - 1,
        m = size + fromL.size - 1;

}

if ( size + fromL.size > maxSize)
throw logic_error("merged items do not fit within list");

while (( j >= 0 ) && (k >= 0))
    if ( fromL.dataItems[k].getKey() == dataItems[j].getKey())
throw logic_error("lists are supposed to have no common keys");
else if ( fromL.dataitems[k].getKey() > dataItems[j].getKey())
dataItems[m--] = fromL.dataItems[k--];
else dataItems[m--] = dataItems[j--];

for ( m = k ; m >= 0 ; m--)
dataItems[m]= fromL.dataItems[m];

size += fromL.size;

if (size != 0 )
cursor = 0;



template < typename DataType, typename KeyType >
bool OrderedList < DataType, KeyType> :: isSubset (const OrderedList <DataType, KeyType> &subList)

{
    int j = 0,
    k = 0;
    bool result = false;

    while (( j < size) && (k < subList.size))
    {
        if ( dataItems[j]. getKey() < subList.dataItems[k].getKey())
            j++;
        else if (dataItems[j]. getKey() == subList.dataItems[k].getKey())
        {
            j++;
            k++;
        }
        else
            result = false;
}

if (k == subList.size)
    result = true;

else
    result= false;

    return result;

}

//#endif

声明的大小在哪里?我声明了它,但它根本没有更改错误。请发布准确的错误消息,包括行号。