1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

trouble with errors in extraneous files

Discussion in 'C' started by lapetitedingue, Mar 13, 2009.

  1. lapetitedingue

    lapetitedingue New Member

    Joined:
    Feb 24, 2009
    Messages:
    7
    Likes Received:
    0
    Trophy Points:
    0
    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:
    #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:
    #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!
     
  2. lapetitedingue

    lapetitedingue New Member

    Joined:
    Feb 24, 2009
    Messages:
    7
    Likes Received:
    0
    Trophy Points:
    0
    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'
     
  3. xpi0t0s

    xpi0t0s Mentor

    Joined:
    Aug 6, 2004
    Messages:
    3,012
    Likes Received:
    203
    Trophy Points:
    0
    Occupation:
    Senior Support Engineer
    Location:
    England
    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?
     
  4. xpi0t0s

    xpi0t0s Mentor

    Joined:
    Aug 6, 2004
    Messages:
    3,012
    Likes Received:
    203
    Trophy Points:
    0
    Occupation:
    Senior Support Engineer
    Location:
    England
    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.
     

Share This Page