Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   trouble with errors in extraneous files (http://www.go4expert.com/forums/trouble-errors-extraneous-files-t16536/)

lapetitedingue 14Mar2009 00:37

trouble with errors in extraneous files
 
Hi,
I am trying to implement a non_recursive version (bottom-up) of mergeSort. When I compile my code, however, my x-code brings up numerous errors that have to do with some files that I did not think I was messing with (stl_algo.h, and stl_algobase.h, and stl_iterator_base_types.h) -I will attach a picture of the list of errors.
This is my code for the non_recursive mergeSort
Code: c++

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

#ifndef MERGESORT_H
#define MERGESORT_H

    /**
     * Mergesort algorithm (driver).
     */

    template <typename Comparable>
    void mergeSort( vector<Comparable> & a )
    {
        int n = a.size()-1;
        vector<Comparable> aux;
        for (int m = 1; m < n; m = m+m)
        {
            for (int i = 0; i< n-m; i += m+m)
            {
                /* the last perameter of merge is the min of i+m+m or n*/
                int d = i+m+m;
                if (d < n) { merge(a, aux, i, i+m, d); }
                else { merge(a, aux, i, i+m, n); }
            }
        }
               
    };

    /**
     * Internal method that makes NON_RECURSIVE mergeSort
     */

    template <typename Comparable>
    void mergeSort( vector<Comparable> & a, vector<Comparable> aux, int l, int m, int r)
    {
       
        for (int i = l; i<m; i++)
        {   
            aux.at(i) = a.at(i);
            for (int j=m; j<r; j++)
            {
                aux.at(j) = a.at(m+r-j-1);
                int i = 1; j = r-1;
                for (int k =1; k<r; k++)
                {
                    if (aux.at(j) < aux.at(i)) { a.at(k) =aux.at(j-1); }
                    else { a.at(k) = aux.at(i+1); }
                }
            }

        }
    };
    #endif /*mergeSort.h*/

Here is my main where I am testing it:
Code: c++

#include <iostream>
#include <vector>
#include "mergeSort.h"
using namespace std;


int main ()
{
    vector<int>test;
    test.push_back(6);
    test.push_back(4);
    test.push_back(2);
    test.push_back(3);
    test.push_back(1);
    test.push_back(5);
    test.push_back(8);

    cout << "***Non-recursive MergeSort Algorithm***" <<'\n' <<'\n';
   
    //Initial Unsorted List
    cout << "Initial Unsorted List: "<<'\n';
    for ( int i = 0; i < 7; i++ )
        cout << test[i] << " ";
   
    //Calling MergeSort
    mergeSort(test);
    cout <<"Calling MergeSort" <<'\n';
   
    //Sorted List
    cout << "Sorted List: "<<endl;
    for ( int i = 0; i < 7; i++ )
        cout << test[i] << " ";
       
    return 0;
}


Does anyone see what the problem is here? Thanks a bunch in advance!

lapetitedingue 14Mar2009 02:45

Re: trouble with errors in extraneous files
 
I tried putting the #includes in the h file underneath the #define...but no luck. The first two errors are :
Line Location stl_algo.h:2991: error: no match for 'operator*' in '*__first1'
Line Location stl_algo.h:2991: error: no match for 'operator*' in '*__first1'

xpi0t0s 14Mar2009 14:55

Re: trouble with errors in extraneous files
 
It's difficult to spot errors when you don't knw where to look.
Which line of your source code are the above errors associated with?

xpi0t0s 14Mar2009 14:57

Re: trouble with errors in extraneous files
 
Also if you say what compiler you're using and on what operating system then maybe those of use that have that setup available can try the code out.


All times are GMT +5.5. The time now is 14:43.