{"id":27415504,"url":"https://github.com/hansalemaos/cppvec","last_synced_at":"2026-05-03T07:33:21.528Z","repository":{"id":255743141,"uuid":"853562562","full_name":"hansalemaos/cppvec","owner":"hansalemaos","description":"C++ vectors with Python indexing","archived":false,"fork":false,"pushed_at":"2024-09-06T23:14:18.000Z","size":23,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-01T13:04:06.574Z","etag":null,"topics":["cpp","python","vector"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/cppvec/","language":"Cython","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/hansalemaos.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-06T23:14:15.000Z","updated_at":"2024-09-06T23:21:44.000Z","dependencies_parsed_at":"2024-09-07T00:00:02.064Z","dependency_job_id":"260708d6-56f3-4910-b24f-b8ae002df9b7","html_url":"https://github.com/hansalemaos/cppvec","commit_stats":null,"previous_names":["hansalemaos/cppvec"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hansalemaos%2Fcppvec","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hansalemaos%2Fcppvec/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hansalemaos%2Fcppvec/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hansalemaos%2Fcppvec/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hansalemaos","download_url":"https://codeload.github.com/hansalemaos/cppvec/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248809028,"owners_count":21164895,"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","python","vector"],"created_at":"2025-04-14T09:27:27.773Z","updated_at":"2026-05-03T07:33:21.474Z","avatar_url":"https://github.com/hansalemaos.png","language":"Cython","funding_links":[],"categories":[],"sub_categories":[],"readme":"# C++ vectors with Python indexing\n\n### Tested against Windows 10 / Python 3.11 / Anaconda / C++ 20 - MSVC\n\n### pip install cppvec\n\n### Cython and a C++ compiler must be installed!\n\n```PY\nfrom cppvec import (\n    CppVectorChar,\n    CppVectorDouble,\n    CppVectorFloat,\n    CppVectorInt,\n    CppVectorLong,\n    CppVectorLongLong,\n    CppVectorUnsignedInt,\n    CppVectorUnsignedLong,\n    CppVectorUnsignedLongLong,\n    CppVectorUnsignedChar,\n    CppVectorShort,\n    CppVectorUnsignedShort,\n    CppVectorByte,\n    CppVectorUnsignedByte,\n    CppVectorLongDouble,\n    CppVectorSize_t,\n)\nimport numpy as np\nimport ctypes\n\narray_char = np.arange(100).astype(ctypes.c_byte)\narray_int = np.arange(100).astype(ctypes.c_int)\narray_long = np.arange(100).astype(ctypes.c_long)\narray_long_long = np.arange(100).astype(ctypes.c_longlong)\narray_float = np.arange(100).astype(ctypes.c_float)\narray_double = np.arange(100).astype(ctypes.c_double)\narray_uchar = np.arange(100).astype(ctypes.c_ubyte)\narray_uint = np.arange(100).astype(ctypes.c_uint)\narray_ulong = np.arange(100).astype(ctypes.c_ulong)\narray_ulong_long = np.arange(100).astype(ctypes.c_ulonglong)\narray_short = np.arange(100).astype(ctypes.c_short)\narray_ushort = np.arange(100).astype(ctypes.c_ushort)\narray_byte = np.arange(100).astype(ctypes.c_byte)\narray_ubyte = np.arange(100).astype(ctypes.c_ubyte)\narray_long_double = np.arange(100).astype(ctypes.c_longdouble)\narray_size_t = np.arange(100).astype(ctypes.c_size_t)\n\n\nvec_char = CppVectorChar(array_char)\nvec_int = CppVectorInt(array_int)\nvec_long = CppVectorLong(array_long)\nvec_long_long = CppVectorLongLong(array_long_long)\nvec_float = CppVectorFloat(array_float)\nvec_double = CppVectorDouble(array_double)\nvec_uchar = CppVectorUnsignedChar(array_uchar)\nvec_uint = CppVectorUnsignedInt(array_uint)\nvec_ulong = CppVectorUnsignedLong(array_ulong)\nvec_ulong_long = CppVectorUnsignedLongLong(array_ulong_long)\nvec_short = CppVectorShort(array_short)\nvec_ushort = CppVectorUnsignedShort(array_ushort)\nvec_byte = CppVectorByte(array_byte)\nvec_ubyte = CppVectorUnsignedByte(array_ubyte)\nvec_long_double = CppVectorLongDouble(array_long_double)\nvec_size_t = CppVectorSize_t(array_size_t)\n\nmy_vectors = {\n    \"vec_char\": vec_char,\n    \"vec_int\": vec_int,\n    \"vec_long\": vec_long,\n    \"vec_long_long\": vec_long_long,\n    \"vec_float\": vec_float,\n    \"vec_double\": vec_double,\n    \"vec_uchar\": vec_uchar,\n    \"vec_uint\": vec_uint,\n    \"vec_ulong\": vec_ulong,\n    \"vec_ulong_long\": vec_ulong_long,\n    \"vec_short\": vec_short,\n    \"vec_ushort\": vec_ushort,\n    \"vec_byte\": vec_byte,\n    \"vec_ubyte\": vec_ubyte,\n    \"vec_long_double\": vec_long_double,\n    \"vec_size_t\": vec_size_t,\n}\n\nmy_results_apply_as_c_function = []\nmy_results_apply_as_c_pyfunction = []\nmy_results_apply_as_c_function_nogil = []\n\n\ndef apply_as_c_function(a):\n    my_results_apply_as_c_function.append(a + 5)\n\n\ndef apply_as_c_pyfunction(a):\n    my_results_apply_as_c_pyfunction.append(a + 5)\n\n\ndef apply_function(a):\n    return a + 5\n\n\ndef apply_as_c_function_nogil(a):\n    my_results_apply_as_c_function_nogil.append(a + 5)  # might not release the gil\n\n\nfor k, c in my_vectors.items():\n    print(f\"before: {k=}\")\n    print(f\"{c}\")\n    c.append(5)\n    print(f\"{c=}\")\n    print(\"-----------------------------------------\")\n    added = c + [1, 23, 3, 3]\n    print(f\"{added=}\")\n    print(\"-----------------------------------------\")\n    del c[5]\n    print(c)\n    print(\"-----------------------------------------\")\n    del c[:30]\n    print(c)\n    print(\"-----------------------------------------\")\n    del c[:10:2]\n    print(c)\n    print(\"-----------------------------------------\")\n    c[[1, 2, 11]] = 126\n    print(c)\n    print(\"-----------------------------------------\")\n\n    c[0] = 125\n    print(c)\n    print(\"-----------------------------------------\")\n\n    c[12:17:2] = 124\n    print(c)\n    print(\"-----------------------------------------\")\n\n    c.insert(4, 101)\n    print(c)\n    print(\"-----------------------------------------\")\n    c.insert([1, 3, 4, 6], 113)\n    print(c)\n    print(\"-----------------------------------------\")\n    print(c.index_all(113))\n    print(\"-----------------------------------------\")\n    print(c.index(113))\n    print(\"-----------------------------------------\")\n    print(113 in c)\n    print(\"-----------------------------------------\")\n    print(103 in c)\n    print(\"-----------------------------------------\")\n    c.remove(113)\n    print(c)\n    print(\"-----------------------------------------\")\n    popped = c.pop(3)\n    print(popped)\n    print(c)\n    print(\"-----------------------------------------\")\n    c.remove_all(113)\n    print(c)\n    print(\"-----------------------------------------\")\n    print(c.group_items())\n    print(c.split_at_index([2, 4, 6, 10]))\n    print(c.split_at_index(3))\n    print(c.split_at_value(124))\n    c.extend([77, 1, 2, 3, 4, 5, 99])\n    print(c)\n    c.extend_save([7777, 1, 2, 3, 4, 5, 9999, 11.232, \"stax\", 9999])\n    print(c)\n    nparray = np.array([77, 1, 2, 3, 4, 5, 99], dtype=c.nparray.dtype)\n    c.extend_np(nparray)\n    print(c)\n    c.reserve(1000)\n    c.resize(300)\n    print(c)\n    print(c.count(0))\n    c.remove_all(0)\n    print(c)\n    print(c.count(0))\n    crev = c.reverse()\n    print(crev)\n    ccopy = c.copy()\n    print(ccopy)\n    ccopy.clear()\n    print(ccopy)\n    print(ccopy.empty())\n    print(c.to_tuple())\n    print(c.to_list())\n    print(c.to_set())\n    try:\n        print(np.max(c.nparray))\n        print(np.min(c.nparray))\n        print(np.where(c.nparray \u003e 10))\n    except Exception:\n        print(f\"wrong datatype: {c.nparray.dtype}\")\n    c.sort()\n    print(c)\n    results1 = c.apply_function(apply_function)\n    print(results1)\n    c.apply_as_c_function(apply_as_c_function)\n    print(my_results_apply_as_c_function)\n    c.apply_as_c_pyfunction(apply_as_c_pyfunction)\n    print(my_results_apply_as_c_pyfunction)\n    c.apply_as_c_function_nogil(apply_as_c_function_nogil)\n    print(my_results_apply_as_c_function_nogil)\n    my_results_apply_as_c_pyfunction.clear()\n    my_results_apply_as_c_function.clear()\n    my_results_apply_as_c_function_nogil.clear()\n\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhansalemaos%2Fcppvec","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhansalemaos%2Fcppvec","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhansalemaos%2Fcppvec/lists"}