Click here to Skip to main content
Click here to Skip to main content
Go to top

Extend collections

, 11 Dec 1999
Rate this:
Please Sign up or sign in to vote.
Extended Collection classes to provide copy, compare and find operations with 2 dimensional arrays and maps
  • Download demo project - 24 Kb
  • Download source files - 10 Kb
  • Sample Image - ExtCol.gif

    <!-- Article Starts --> This article describes three enhanced collection template classes, CArrayEx, CMapEx and CSortedArray. CArrayEx and CMapEx each provide an assignment operator and class copy constructor that allow us to easily craft two dimensional arrays and mappings. In addition, CMapEx provides the ability to map CStrings, by providing a template hash function. CSortedArray is a dynamic array template class that provides "sort after insertion" functionality.
      // example of 2 dimensional array
      typedef CArrayEx<int,int> CIntArray;
      CArrayEx<CIntArray, CIntArray &> a2D;
      CIntArray aInt;
      a2D.Add (aInt);    

    In a lot of cases we need an array with a find function. We can use a sorted array for this.

    To work with arrays of pointers you should use the functions DestructElements, CopyElements as described in the MSDN article 'Collections: How to Make a Type-Safe Collection'], but there exists an alternative way by using auto_ptr:

    // auto_ptr example.
    CArray<auto_ptr<CValue>,auto_ptr<CValue> > a;
    CArray<auto_ptr<CValue>,auto_ptr<CValue> > b;
    a.Add(auto_ptr<CValue>(new CValue(1)));
    a.Add(auto_ptr<CValue>(new CMyValue(2)));
    b.Add(auto_ptr<CValue>(new CValue(3)));
    b.Add(auto_ptr<CValue>(new CMyValue(4)));
    // TRACE(_T("Copy\n"));
    // a.Copy(b);
    TRACE(_T("Remove all\n"));

    The classes provided with this article are as follows:

    Adds Copy constructor, assign operator and Array compare operators
    Adds Copy constructor, assign operator and a method "GetAt" by index. Also adds Hash functions for CString
    Adds Copy constructor and assign operator
    Adds Copy constructor, assign operator and Array compare operators. Also adds Sorting methods by operators or compare functions


    This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

    A list of licenses authors might use can be found here


    About the Author

    Audrius Vasiliauskas
    Business Analyst
    Lithuania Lithuania
    No Biography provided

    Comments and Discussions

    GeneralLicense Rights PinmemberJohn McNeill2-Dec-10 6:31 
    Mr. Vasiliauskas,
    We understand that your program, Extended Collections (downloaded from the Code Project web pages), is free to use for both personal and commercial purposes. Also, per your August 25, 2009 response to Mr/Ms Yhing, you allow users to modify (that is, create derivative works of) your source code provided we leave your name in the source code files.
    We would like to clarify and confirm that your permissions or license or grant of rights to users of the Extended Collections program also includes the rights to reproduce (copy) the program in source or object form, distribute copies in source or object form, and transfer copies of the program in source or object form. In all cases, we would leave your name and copyright notices in all files
    We appreciate your reply and thank you for a useful program.
    Thank you,
    John McNeill, Attorney
    On behalf of an undisclosed client
    GeneralRe: License Rights PinmemberAudrius Vasiliauskas2-Dec-10 7:15 
    GeneralRe: License Rights PinmemberJohn McNeill2-Dec-10 7:17 
    Generallicense Pinmemberyhing24-Aug-09 6:51 
    GeneralRe: license PinmemberAudrius Vasiliauskas24-Aug-09 21:56 
    GeneralProblem with unicode Pinmemberbitkidoku13-Dec-06 2:04 
    GeneralVC 7.1 error C2679 PinmemberHobbitCoder25-Oct-05 13:50 
    General.NET Pinmemberdavedrums7-Sep-04 4:01 
    GeneralRe: .NET PinmemberAudrius Vasiliauskas13-Sep-04 0:37 
    GeneralRemoveAt PinmemberPhilTordoff18-Mar-03 4:12 
    GeneralRe: RemoveAt PinmemberAudrius Vasiliauskas18-Mar-03 4:28 
    QuestionSetSize missing? PinmemberAnonymous9-May-01 2:20 

    General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

    Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

    | Advertise | Privacy | Mobile
    Web02 | 2.8.140916.1 | Last Updated 12 Dec 1999
    Article Copyright 1999 by Audrius Vasiliauskas
    Everything else Copyright © CodeProject, 1999-2014
    Terms of Service
    Layout: fixed | fluid