sort a vector


 
Thread Tools Search this Thread
Top Forums Programming sort a vector
# 1  
Old 03-04-2011
sort a vector

Hi all,
I have a vector,the type of the element within it is list<int>,and i wanna sort this vector.So i implemented a function as a predicate for sort(the STL algorithm).Problem came when i missed the bold part in my code,g++ generated lots of error messages.And after i added the bold part,the code compiled successfully.Why?(As i know,the predicate need not to have a const parameter)Any tips will be appreciated.Thanks.
Dengjin.
Code:
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <list>

using namespace std;

void print(list<int>& lst)
{
	copy(lst.begin(),lst.end(),
			ostream_iterator<int>(cout," "));
	cout<<endl;
}

bool sortCritic(const list<int>& lst1,const list<int>& lst2)
{
	return lexicographical_compare(lst1.begin(),lst1.end(),
											 lst2.begin(),lst2.end());
}

int main()
{
	list<int> c1,c2,c3,c4;
	
	for(int i=1;i<=5;i++)
		c1.insert(c1.end(),i);

	c4 = c3 = c2 = c1;

	c1.push_back(7);	
	c3.push_back(2);
	c3.push_back(0);
	c4.push_back(2);

	vector<list<int> > cc;

	cc.push_back(c1);
	cc.push_back(c2);
	cc.push_back(c3);
	cc.push_back(c4);

	for_each(cc.begin(),cc.end(),print);
	sort(cc.begin(),cc.end(),sortCritic);
	cout<<endl;
	for_each(cc.begin(),cc.end(),print);
	
}

# 2  
Old 03-04-2011
Quote:
Originally Posted by homeboy
Problem came when i missed the bold part in my code,g++ generated lots of error messages.And after i added the bold part,the code compiled successfully.Why?(As i know,the predicate need not to have a const parameter)Any tips will be appreciated.Thanks.
Dengjin.
The objects don't have to be const, it's enough that your function treats them as such; it's a safety feature. The references being const stops you from writing any members, and prevents you from calling any members or operators that aren't also const. You really don't want to be changing your data during a sort, especially when using the original, not a copy!
This User Gave Thanks to Corona688 For This Post:
# 3  
Old 03-04-2011
Quote:
Originally Posted by Corona688
The objects don't have to be const, it's enough that your function treats them as such; it's a safety feature. The references being const stops you from writing any members, and prevents you from calling any members or operators that aren't also const. You really don't want to be changing your data during a sort, especially when using the original, not a copy!
you're right,error went away without using reference.Thanks
# 4  
Old 03-04-2011
Quote:
Originally Posted by homeboy
you're right,error went away without using reference.Thanks
You should be using references though! Otherwise it creates a copy ever time which is very slow. You just have to make it a const reference.
This User Gave Thanks to Corona688 For This Post:
# 5  
Old 03-04-2011
Quote:
Originally Posted by Corona688
You should be using references though! Otherwise it creates a copy ever time which is very slow. You just have to make it a const reference.
yeah,got itSmilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Number to bit vector

Is there a function to convert number (unsigned int for this example) to binary? I could not find a simple one thru google. While I was learning bloom filter with the example, I was wondering if anybody can help me to 1) display the real bits vector for the bloomfilter; 2) if dataset is very... (11 Replies)
Discussion started by: yifangt
11 Replies

2. Shell Programming and Scripting

Vector normalisation

In AWK For 3 individual vectors of the form: -2.772 -9.341 -2.857 -5.140 -6.597 -1.823 -2.730 -5.615 1.159 I would like to write a script that parses line by line to (i) normalise, (ii) divide by the norm for *each* vector. I.e. sqrt(-2.772^2 + -9.341^2 + -2.857^2)=10.154 ... (4 Replies)
Discussion started by: chrisjorg
4 Replies

3. Programming

vector c++

hello guys. i'm new to c++. i've problem using two dimensional vector. i've a project of making conway's game of life. this is the code that i have made so far. my problem is how can i give a two dimensional vector through main. glider.vec1 = vec; is not correct way to give a two... (2 Replies)
Discussion started by: nishrestha
2 Replies

4. Programming

Array and Vector

Hi all, from my understanding I understand that I can use array in this manner. struct test { int a; int b; int c; }; test testing; //creating an array with the structer type testing.a=1; testing.b=2; testing.c=3; If I'm not wrong we can use array in this manner,... (12 Replies)
Discussion started by: vinzping
12 Replies

5. Programming

C++ Map using a Vector as a Value Type?

I modified some code I found on Wikipedia concerning maps to see if it would work before applying it to a project I'm working on that has a similar idea. What I would want is for a user to be able to enter sentences and then be able to distinguish how many times a the person entered a word in a... (4 Replies)
Discussion started by: kcgb20
4 Replies

6. Programming

c++ mutidimentional arrays using vector

Hi! I need to make dynamic multidimensional arrays using the vector class. I found in this page How to dynamically create a two dimensional array? - Microsoft: Visual C++ FAQ - Tek-Tips the way to do it in 2D, and now i'm trying to expand it to 3D but i don't understand how is the operator working,... (1 Reply)
Discussion started by: carl.alv
1 Replies

7. Programming

multidimensional array using c++ vector

Hi! I need to make dynamic multidimensional arrays using the vector class. I found in this page How to dynamically create a two dimensional array? - Microsoft: Visual C++ FAQ - Tek-Tips the way to do it in 2D, and now i'm trying to expand it to 3D but i don't understand how is the operator working,... (0 Replies)
Discussion started by: carl.alv
0 Replies

8. Programming

Vector Traversing

Hi i have the following structure struct S { char Mod_num; char val; char chr_nm_cd; } I am reading a 2GB file and inserting into the structure and writing into a vector. I feel like only vector will be a right option. I tried with multimap but it is memory intensive and hence i... (1 Reply)
Discussion started by: dhanamurthy
1 Replies

9. Programming

Linker error when using vector's

using SUN C++ I have a problem when I do a push_back on a vector. The linker gives me a undefined symbol error on __cxa_end_catch. Any ideas, is there a library to include? Thanks Chris (1 Reply)
Discussion started by: CDurkin
1 Replies

10. Programming

Saving a vector to a file

Another C++ question, please do notify me if this forum is C-only! :) I'm having a vector... vector<Person> x; ... with a class I've defined (Person). I have several elements in this vector and I would like to save it to a file (binary (?)). And later on open up this file to retrieve... (1 Reply)
Discussion started by: J.P
1 Replies
Login or Register to Ask a Question