{"id":16497043,"url":"https://github.com/bartoszklonowski/extendedvector","last_synced_at":"2026-03-09T18:09:27.689Z","repository":{"id":51031727,"uuid":"328808573","full_name":"BartoszKlonowski/ExtendedVector","owner":"BartoszKlonowski","description":"C++17 version of std::vector, but much more extended and provided with all the features available in List\u003cT\u003e from .NET Framework.","archived":false,"fork":false,"pushed_at":"2023-01-11T16:59:42.000Z","size":188,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-25T03:15:17.406Z","etag":null,"topics":["cpp","extendedvector","foreach","list","std","vector"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BartoszKlonowski.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-01-11T22:33:32.000Z","updated_at":"2023-01-11T16:59:47.000Z","dependencies_parsed_at":"2023-02-09T03:45:16.711Z","dependency_job_id":null,"html_url":"https://github.com/BartoszKlonowski/ExtendedVector","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BartoszKlonowski%2FExtendedVector","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BartoszKlonowski%2FExtendedVector/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BartoszKlonowski%2FExtendedVector/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BartoszKlonowski%2FExtendedVector/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BartoszKlonowski","download_url":"https://codeload.github.com/BartoszKlonowski/ExtendedVector/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252210783,"owners_count":21712273,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","extendedvector","foreach","list","std","vector"],"created_at":"2024-10-11T14:37:55.112Z","updated_at":"2026-03-09T18:09:27.638Z","avatar_url":"https://github.com/BartoszKlonowski.png","language":"C++","readme":"\u003ch1 align=\"center\"\u003e ExtendedVector \u003c/h1\u003e\r\n\u003cp align=\"center\"\u003e\r\n    Increase your productivity and vector handling with just one header.\r\n\u003c/p\u003e\r\n\u003cp align=\"center\"\u003e\r\n    \u003ca href=\"https://github.com/BartoszKlonowski/ExtendedVector/blob/main/LICENSE\"\u003e\r\n        \u003cimg src=\"https://img.shields.io/github/license/BartoszKlonowski/ExtendedVector?style=plastic\" alt=\"ExtendedVector is released under the MIT license.\" /\u003e\r\n    \u003c/a\u003e\r\n    \u003ca href=\"https://github.com/BartoszKlonowski/ExtendedVector/actions/workflows/ExtendedVector-Tests.yml\"\u003e\r\n        \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/BartoszKlonowski/ExtendedVector/ExtendedVector-Tests.yml?label=Tests\u0026style=plastic\" alt=\"Unit Tests status\" /\u003e\r\n    \u003c/a\u003e\r\n    \u003ca href=\"https://github.com/BartoszKlonowski/ExtendedVector/actions/workflows/ExtendedVector-Source.yml\"\u003e\r\n        \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/BartoszKlonowski/ExtendedVector/ExtendedVector-Source.yml?label=Build%3A%20CMake%20%26%20MSBuild\u0026style=plastic\" alt=\"Source: CMake \u0026 MSBuild build status\" /\u003e\r\n    \u003c/a\u003e\r\n\u003c/p\u003e\r\n\r\nThis project is the extension of `std::vector\u003cT\u003e` from STL but based on .NET Framework `List\u003cT\u003e`.\r\n\u003cbr/\u003eIt means, that all of features and methods provided by `List\u003cT\u003e` should also be available in the implemented `std::vector\u003cT\u003e` extension: `Cx::Vector\u003cT\u003e`.\r\n\r\nThe goal of this project was to create the tool which will make the usage of standard `std::vector\u003cT\u003e` even easier when it comes to complex yet typical operations done on collections which are currently not a part of the *vector* header, but require more includes and more LOC.\r\n\r\nPlease check the official documentation of [std::vector\\\u003cT\u003e](https://en.cppreference.com/w/cpp/container/vector) and [System.Collections.Generic.List\\\u003cT\u003e](https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1?view=netframework-4.8) to see the two bases of this product and how it connects both of them.\r\n  \r\n---\r\n  \r\n## Installation \u0026 Usage ##\r\n\r\nTo use this tool:\r\n* Download the archived release package,\r\n* Unpack the release package and place the main implementation's header (which is *Vector.hpp*) in any directory within your project (for example \"*Dependencies*\" or \"*3rdParties*\"),\r\n* Include the *Vector.hpp* header in your implementation and call the `Cx::Vector\u003cT\u003e` to instantiate the container.\r\n\r\n**NOTE:**\r\n\u003cbr/\u003eExtendedVector already uses several other includes from standard library, such as the following:\r\n\u003cbr/\u003e*vector*, *iostream*, *algorithm*, *functional*, *array*\r\n\r\n---\r\n\r\n\r\n## Documentation ##\r\n\r\nThis project fills the gap between the `std::vector\u003cT\u003e` and `System.Collections.Generic.List\u003cT\u003e` which means that it brings all the features already available in the `List\u003cT\u003e` to the `std::vector\u003cT\u003e`, making a `Cx::Vector\u003cT\u003e` in result.\r\nEach method implemented within the `Cx::Vector\u003cT\u003e` corresponds to the same method in the `List\u003cT\u003e` from .NET.\r\n\u003cbr/\u003eSo to check the method's documentation in details please check the .NET's official documentation of `List\u003cT\u003e` [methods](https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1?view=netframework-4.8#methods) section.\r\n\u003cbr/\u003eThe methods already available in the original `std::vector\u003cT\u003e` are still available unchanged when using `Cx::Vector\u003cT\u003e`.\r\n\r\n**NOTE:** Each method implemented in the *Vector.hpp* header are also covered with the *doxygen* comments (`///`), so each code editor supporting displaying them will show the method documented each time it is called within your code.\r\n\r\nThe presentation of some of the Cx::Vector abilities is done in the *Examples* project's source code files.\r\n\u003cbr/\u003eSo to fully check the abilities of the ExtendedVector utility, please go to the [Examples](https://github.com/BartoszKlonowski/ExtendedVector/tree/main/Examples) directory.\r\n\r\nBelow you can find just a short demo of what the *ExtendedVector* project is all about and what are the example benefits of using it:\r\n```cpp\r\n    Cx::Vector\u003cstd::string\u003e vector;\r\n    vector.push_back( \"Hello\" );\r\n    vector.push_back( \"World!\" );\r\n    Print( vector );\r\n\r\n    vector.clear();\r\n    Print( vector );\r\n\r\n    vector = { \"Elephant\", \"Cat\", \"Mouse\", \"Wolf\", \"Dinosaur\", \"Tiger\", \"Dog\", \"Eagle\", \"Cow\", \"Snake\" };\r\n    Print( vector );\r\n\r\n    auto animalsByCLetter = vector.FindAll( []( const std::string\u0026 animal )-\u003ebool\r\n        {\r\n            return animal[0] == 'C';\r\n        } );\r\n    Print( animalsByCLetter );\r\n\r\n    vector.RemoveAll( []( const std::string\u0026 element )-\u003ebool\r\n        {\r\n            return element.length() \u003e 4;\r\n        } );\r\n    Print( vector );\r\n\r\n    vector.ForEach( []( std::string\u0026 element )\r\n        {\r\n            element = std::string(\"Animal:\") + element;\r\n        } );\r\n    Print( vector );\r\n\r\n    if( vector.Contains(\"Animal:Dog\") )\r\n        std::cout \u003c\u003c \"\\nIndex of 'Animal:Dog' is: \" \u003c\u003c vector.IndexOf( \"Animal:Dog\" ) \u003c\u003c std::endl;\r\n\r\n    auto indexOfCow = vector.IndexOf( \"Animal:Cow\" );\r\n    vector.RemoveAt( indexOfCow );\r\n    Print( vector );\r\n```\r\n\r\nwhich gives the following output:\r\n\r\n```\r\nPrinting Cx::Vector with 2 elements inside:\r\nHello World!\r\n\r\nPrinting Cx::Vector with 0 elements inside:\r\n\r\n\r\nPrinting Cx::Vector with 10 elements inside:\r\nElephant Cat Mouse Wolf Dinosaur Tiger Dog Eagle Cow Snake\r\n\r\nPrinting Cx::Vector with 2 elements inside:\r\nCat Cow\r\n\r\nPrinting Cx::Vector with 4 elements inside:\r\nCat Wolf Dog Cow\r\n\r\nPrinting Cx::Vector with 4 elements inside:\r\nAnimal:Cat Animal:Wolf Animal:Dog Animal:Cow\r\n\r\nIndex of 'Animal:Dog' is: 2\r\n\r\nPrinting Cx::Vector with 3 elements inside:\r\nAnimal:Cat Animal:Wolf Animal:Dog\r\n```\r\n\r\n---\r\n\r\n## Contributing ##\r\n\r\nIf you would like to contribute to the *ExtendedVector* project, you are more than welcome!\r\n\u003cbr/\u003eAny contribution is to make the project better and to improve the developer's experience.\r\n\u003cbr/\u003eSo if you'd like to contribute, you can do this in one of the following ways:\r\n\r\n* Create an [Issue](https://github.com/BartoszKlonowski/ExtendedVector/issues/new) and let the author handle it\r\n\u003cbr/\u003eEach issue created in the [Issues](https://github.com/BartoszKlonowski/ExtendedVector/issues) section gives a chance of improving the project and make it even more useful.\r\n* Create the [Pull Request](https://github.com/BartoszKlonowski/ExtendedVector/compare) with the desired changes\r\n\u003cbr/\u003eAfter a detailed review it will be merged.\r\n\u003cbr/\u003ePlease remember to give the detailed description of why such change is needed, what is the test plan and what are the details of your implementation. This will make the review easier and quicker.\r\n\u003cbr/\u003ePlease also remember to check the unit tests and implement additional tests in case of providing the project with some new features/new code.\r\n\r\n---\r\n\r\n## Thank you! ##\r\n\r\nIf you like this project, or you find it helpful, please share your opinion with the author or just give it a star!\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbartoszklonowski%2Fextendedvector","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbartoszklonowski%2Fextendedvector","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbartoszklonowski%2Fextendedvector/lists"}