Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > How get data from vectors of templates?

Reply
Thread Tools

How get data from vectors of templates?

 
 
Rob
Guest
Posts: n/a
 
      04-15-2008
How would I do this?

I want to be able to handle vectors of many different types of data
and vectors that can contain any number of other vectors of data.

Currently, I have a templated function that handles vectors of vectors
of <typename T> (which could be anything from int to vectors of
something else). As well, I have specialized/overloaded functions to
handle the single-level vectors of data (e.g. vector<string>). So the
templated function only handles vectors of vectors of....whatever and
then as it loops down to the last vector of data, it "passes" it off
to the overloaded specialized functions.

My problem is that the way I'm currently doing this creates extra
uselss objects and thus isn't clean/efficient. I can't seem to figure
out how to properly narrow down the vectors.

Code:
vector<int>* convert(SomeClass obj)
{
	//Return vector
	vector<int>* retVector = new vector<int>();

	//Get the values
	int* values = ...elided...

	//Put into vector
	retVector->assign( values, values + length );

	//Clean up
	delete values;

	return retVector;
}

vector<vector<int> >* convert(SomeClass obj, vector<int> spec)
{
	//Length of array
	int length = GetArrayLength( obj );

	//Return vector
	vector<vector<int> >* retVector = new vector<vector<int> >();

	//Get all inner arrays
	for ( int i = 0; i < length; i++ )
	{
		//Create an inner vector
		vector<int>* innerVector;

		//Now get the element of the outer SomeOtherClass Array
		SomeOtherClass otherObj = ...elided...

		//Set data
		innerVector = convert( env, otherObj );

		//Add it to the outer vector
		retVector->push_back( *innerVector );

		//Clean up
		delete innerVector;
	}

	return retVector;
}

template <typename T>
vector<vector<T> >* convert(SomeClass obj, vector<T> spec)
{
	//Length of array
	int length = GetArrayLength( obj );

	//Return array
	vector<vector<T> >* T = new vector<vector<T> >();

	//Set all inner arrays
	for ( int i = 0; i < length; i++ )
	{
		//Create an inner vector
		vector<T>* innerVector;

		//use this to narrow down to eventually the specialized function
		T subSpec;

		//Now get the element
		SomeOtherClass otherObj = ...elided...

		//Convert inner data
		innerVector = convert( env, otherObj, subSpec );

		//Add it to the outer vector
		T->push_back( *innerVector );

		//Clean up refs
		delete innerVector;
	}

	return T;
}

int main()
{
	vector<vector<string> >* ret = convert( env, o2, vector<string>() );

	//Print out results
	for ( vector<vector<string> >::const_iterator it = ret->begin(); it !
= ret->end(); ++it )
	{
		vector<string> vec = *it;
		for ( vector<string>::const_iterator vecIt = vec.begin(); vecIt !=
vec.end(); ++ivecIt )
		{
			printf( ( ( *vecIt ) + "\n" ).c_str() );
		}
	}
}
 
Reply With Quote
 
 
 
 
Fei Liu
Guest
Posts: n/a
 
      04-15-2008
Rob wrote:
> How would I do this?
>
> I want to be able to handle vectors of many different types of data
> and vectors that can contain any number of other vectors of data.
>
> Currently, I have a templated function that handles vectors of vectors
> of <typename T> (which could be anything from int to vectors of
> something else). As well, I have specialized/overloaded functions to
> handle the single-level vectors of data (e.g. vector<string>). So the
> templated function only handles vectors of vectors of....whatever and
> then as it loops down to the last vector of data, it "passes" it off
> to the overloaded specialized functions.
>
> My problem is that the way I'm currently doing this creates extra
> uselss objects and thus isn't clean/efficient. I can't seem to figure
> out how to properly narrow down the vectors.
>


search 'blitz' or pythonArray for a discussion of multi-dimension array
implementation.

Fei
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: How include a large array? Edward A. Falk C Programming 1 04-04-2013 08:07 PM
c++ primer statement about vectors containing vectors pauldepstein@att.net C++ 3 03-26-2008 06:22 PM
INOUT Vectors data is incorrect Matt VHDL 8 01-04-2008 06:46 PM
how to achieve thread safety at element level in STL data structureslike hash map, vectors grbgooglefan C++ 7 12-05-2007 11:10 AM
Ruby, SWIG and C++: how to properly wrap vector of vectors of doubles (2D vectors)? Ruby 0 09-14-2005 05:47 PM



Advertisments