MultiArray: a C++ library for generic programming with arrays
In C++, multi‐dimensional arrays are often used but the language provides limited native support for them. The language, in its Standard Library, supplies sophisticated interfaces for manipulating sequential data, but relies on its bare‐bones C heritage for arrays. The MultiArray library, a part of...
Uloženo v:
| Vydáno v: | Software, practice & experience Ročník 35; číslo 2; s. 159 - 188 |
|---|---|
| Hlavní autoři: | , |
| Médium: | Journal Article |
| Jazyk: | angličtina |
| Vydáno: |
Chichester, UK
John Wiley & Sons, Ltd
01.02.2005
|
| Témata: | |
| ISSN: | 0038-0644, 1097-024X |
| On-line přístup: | Získat plný text |
| Tagy: |
Přidat tag
Žádné tagy, Buďte první, kdo vytvoří štítek k tomuto záznamu!
|
| Abstract | In C++, multi‐dimensional arrays are often used but the language provides limited native support for them. The language, in its Standard Library, supplies sophisticated interfaces for manipulating sequential data, but relies on its bare‐bones C heritage for arrays. The MultiArray library, a part of the Boost library collection, enhances a C++ programmer's tool set with versatile multi‐dimensional array ions. It includes a general array class template and native array adaptors that support idiomatic array operations and interoperate with C++ Standard Library containers and algorithms. The arrays share a common interface, expressed as a generic programming concept, in terms of which generic array algorithms can be implemented. We present the library design, introduce a generic interface for array programming, demonstrate how the arrays integrate with the C++ Standard Library, and discuss the essential aspects of their implementation. Copyright © 2004 John Wiley & Sons, Ltd. |
|---|---|
| AbstractList | In C++, multi‐dimensional arrays are often used but the language provides limited native support for them. The language, in its Standard Library, supplies sophisticated interfaces for manipulating sequential data, but relies on its bare‐bones C heritage for arrays. The MultiArray library, a part of the Boost library collection, enhances a C++ programmer's tool set with versatile multi‐dimensional array ions. It includes a general array class template and native array adaptors that support idiomatic array operations and interoperate with C++ Standard Library containers and algorithms. The arrays share a common interface, expressed as a generic programming concept, in terms of which generic array algorithms can be implemented. We present the library design, introduce a generic interface for array programming, demonstrate how the arrays integrate with the C++ Standard Library, and discuss the essential aspects of their implementation. Copyright © 2004 John Wiley & Sons, Ltd. |
| Author | Garcia, Ronald Lumsdaine, Andrew |
| Author_xml | – sequence: 1 givenname: Ronald surname: Garcia fullname: Garcia, Ronald email: garcia@cs.indiana.edu organization: Open Systems Lab, Indiana University, Bloomington, IN 47405, U.S.A – sequence: 2 givenname: Andrew surname: Lumsdaine fullname: Lumsdaine, Andrew organization: Open Systems Lab, Indiana University, Bloomington, IN 47405, U.S.A |
| BookMark | eNp1z01PwkAQgOGNwURA41_YmwdSnO3HtjXxgBXRBJUIRm-b7TKLq6UluzXIv7cE4sHoaS7PTObtkFZZlUjIKYM-A_DP3Qr7PIAD0maQxh744WuLtAGCxAMehkek49w7AGORz9vk8v6zqM3AWrm5oJJmvR4tTG6l3VBdWbrAEq1RdGWrhZXLpSkXdG3qNyq3G-6YHGpZODzZzy55vhnOsltv_Di6ywZjT_lpCh4yX88xQq3yPJnzPOEqTlmuQOtQhlEeSpkCasQ4jVM19wFA8bzZYaGPkU6CLvF2d5WtnLOohTK1rE1V1laaQjAQ23bRtIumvfFnv_zKmmUT9Yfs7eTaFLj5j4npZLjT-z-Mq_HrR0v7IXgcxJF4eRiJSTaaTa-euLgOvgGzXHmV |
| CitedBy_id | crossref_primary_10_1016_j_engstruct_2017_03_031 crossref_primary_10_1137_060676489 crossref_primary_10_1137_07070111X crossref_primary_10_1002_spe_1021 crossref_primary_10_1002_spe_3077 crossref_primary_10_1587_transinf_E92_D_2043 crossref_primary_10_3390_risks11090157 crossref_primary_10_3389_fams_2022_806537 crossref_primary_10_1061__ASCE_CP_1943_5487_0000662 |
| Cites_doi | 10.1145/355841.355847 10.1007/3-540-49372-7_24 |
| ContentType | Journal Article |
| Copyright | Copyright © 2004 John Wiley & Sons, Ltd. |
| Copyright_xml | – notice: Copyright © 2004 John Wiley & Sons, Ltd. |
| DBID | BSCLL AAYXX CITATION |
| DOI | 10.1002/spe.630 |
| DatabaseName | Istex CrossRef |
| DatabaseTitle | CrossRef |
| DatabaseTitleList | |
| DeliveryMethod | fulltext_linktorsrc |
| Discipline | Computer Science |
| EISSN | 1097-024X |
| EndPage | 188 |
| ExternalDocumentID | 10_1002_spe_630 SPE630 ark_67375_WNG_PCGTSBR6_D |
| Genre | article |
| GrantInformation_xml | – fundername: NSF funderid: ACI‐0219884; EIA‐0131354 – fundername: Lilly Endowment |
| GroupedDBID | -~X .3N .4S .DC .GA .Y3 05W 0R~ 10A 123 1L6 1OB 1OC 31~ 33P 3EH 3R3 3SF 3WU 4.4 4ZD 50Y 50Z 51W 51X 52M 52N 52O 52P 52S 52T 52U 52W 52X 5VS 66C 702 7PT 8-0 8-1 8-3 8-4 8-5 85S 8UM 8WZ 930 9M8 A03 A6W AAESR AAEVG AAHQN AAMMB AAMNL AANHP AANLZ AAONW AASGY AAXRX AAYCA AAZKR ABCQN ABCUV ABDPE ABEFU ABEML ABIJN ABLJU ABUFD ACAHQ ACBWZ ACCZN ACFBH ACGFS ACIWK ACNCT ACPOU ACRPL ACSCC ACXBN ACXQS ACYXJ ADBBV ADEOM ADIZJ ADKYN ADMGS ADMLS ADMXK ADNMO ADOZA ADXAS ADZMN AEFGJ AEIGN AEIMD AENEX AEUYR AEYWJ AFBPY AFFPM AFGKR AFWVQ AFZJQ AGHNM AGQPQ AGXDD AGYGG AHBTC AIDQK AIDYY AIQQE AITYG AIURR AJXKR ALAGY ALMA_UNASSIGNED_HOLDINGS ALVPJ AMBMR AMYDB ARCSS ASPBG ATUGU AUFTA AVWKF AZBYB AZFZN AZVAB BAFTC BDRZF BFHJK BHBCM BMNLL BNHUX BROTX BRXPI BSCLL BY8 CS3 CWDTD D-E D-F D0L DCZOG DPXWK DR2 DRFUL DRSTM DU5 EBS EJD F00 F01 F04 FEDTE G-S G.N GNP GODZA H.T H.X HBH HF~ HGLYW HHY HVGLF HZ~ IX1 J0M JPC KQQ LATKE LAW LC2 LC3 LEEKS LH4 LITHE LOXES LP6 LP7 LUTES LW6 LYRES M61 MEWTI MK4 MRFUL MRSTM MSFUL MSSTM MXFUL MXSTM N04 N05 N9A NF~ NNB O66 O9- OIG P2P P2W P2X P4D PALCI PQQKQ PZZ Q.N Q11 QB0 QRW R.K RIWAO RJQFR ROL RX1 RXW RYL S10 SAMSI SUPJJ TAE TUS TWZ UB1 V2E W8V W99 WBKPD WH7 WIB WIH WIK WOHZO WQJ WXSBR WYISQ WZISG XG1 XPP XV2 YYP ZCA ZY4 ZZTAW ~02 ~IA ~WT AAHHS ABTAH ACCFJ AEEZP AEQDE AEUQT AFPWT AIWBW AJBDE ALUQN RWI WRC WWW AAYXX CITATION O8X |
| ID | FETCH-LOGICAL-c2990-e12fde5efcbb8d6b86c791bc0ff4a45b4aa90efee7979cd2000c6b2fd142e5f83 |
| IEDL.DBID | DRFUL |
| ISICitedReferencesCount | 9 |
| ISICitedReferencesURI | http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=000226738800003&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| ISSN | 0038-0644 |
| IngestDate | Sat Nov 29 04:02:27 EST 2025 Tue Nov 18 22:28:45 EST 2025 Wed Jan 22 17:11:00 EST 2025 Tue Nov 11 03:32:55 EST 2025 |
| IsPeerReviewed | true |
| IsScholarly | true |
| Issue | 2 |
| Language | English |
| License | http://doi.wiley.com/10.1002/tdm_license_1.1 |
| LinkModel | DirectLink |
| MergedId | FETCHMERGED-LOGICAL-c2990-e12fde5efcbb8d6b86c791bc0ff4a45b4aa90efee7979cd2000c6b2fd142e5f83 |
| Notes | ark:/67375/WNG-PCGTSBR6-D Lilly Endowment NSF - No. ACI-0219884; No. EIA-0131354 ArticleID:SPE630 istex:926A8BF6A83654C4F9A9187C2D46928F30D78A21 |
| PageCount | 30 |
| ParticipantIDs | crossref_citationtrail_10_1002_spe_630 crossref_primary_10_1002_spe_630 wiley_primary_10_1002_spe_630_SPE630 istex_primary_ark_67375_WNG_PCGTSBR6_D |
| PublicationCentury | 2000 |
| PublicationDate | 2005-02 February 2005 2005-02-00 |
| PublicationDateYYYYMMDD | 2005-02-01 |
| PublicationDate_xml | – month: 02 year: 2005 text: 2005-02 |
| PublicationDecade | 2000 |
| PublicationPlace | Chichester, UK |
| PublicationPlace_xml | – name: Chichester, UK |
| PublicationTitle | Software, practice & experience |
| PublicationTitleAlternate | Softw: Pract. Exper |
| PublicationYear | 2005 |
| Publisher | John Wiley & Sons, Ltd |
| Publisher_xml | – name: John Wiley & Sons, Ltd |
| References | Bavestrelli G. A class template for n-dimensional generic resizable arrays. C/C++ Users Journal 2000; 18:32-43. Gamma E, Helm R, Johnson R, Vlissides J. Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley Longman Publishing Co., Inc.: Reading, MA, 1995. Josuttis NM. The C++ Standard Library: A Tutorial and Reference. Addison-Wesley: Reading, MA, 1999. Veldhuizen TL. Expression templates. C++ Report 1995; 7(5):26-31. Reprinted in C++ Gems, Lippman S (ed.). Austern MH. Generic Programming and the STL (Professional Computing Series). Addison-Wesley: Reading, MA, 1999. I. O. for Standardization (ISO). ISO/IEC Final Draft International Standard 14882: Programming Language C++. Geneva 20, Switzerland, 1998. Musser DR, Derge GJ, Saini A. STL Tutorial and Reference Guide (2nd edn). Addison-Wesley: Reading, MA, 2001. Lawson C, Hanson R, Kincaid D, Krogh F. Basic linear algebra subprograms for Fortran usage. ACM Transactions on Mathematical Software 1979; 5(3):308-323. Myers NC. Traits: A new and useful template technique. C++ Report 1995; 7:32-35. 1998 1979; 5 1995 1994 2000; 18 2004 2001 1990 2000 1999 1995; 7 Bavestrelli (10.1002/spe.630-BIB13) 2000; 18 Austern (10.1002/spe.630-BIB3) 1999 Stepanov (10.1002/spe.630-BIB2) 1994 Josuttis (10.1002/spe.630-BIB1) 1999 Anderson (10.1002/spe.630-BIB9) 1990 Lawson (10.1002/spe.630-BIB10) 1979; 5 Karmesin (10.1002/spe.630-BIB16) 1998 Veldhuizen (10.1002/spe.630-BIB14) 1998 McNamara (10.1002/spe.630-BIB8) 2000 Musser (10.1002/spe.630-BIB4) 2001 Myers (10.1002/spe.630-BIB5) 1995; 7 Siek (10.1002/spe.630-BIB12) 2004 Siek (10.1002/spe.630-BIB7) 2000 Gamma (10.1002/spe.630-BIB11) 1995 (10.1002/spe.630-BIB6) 1998 Parsons (10.1002/spe.630-BIB15) 1994 Veldhuizen (10.1002/spe.630-BIB17) 1995; 7 |
| References_xml | – reference: Musser DR, Derge GJ, Saini A. STL Tutorial and Reference Guide (2nd edn). Addison-Wesley: Reading, MA, 2001. – reference: I. O. for Standardization (ISO). ISO/IEC Final Draft International Standard 14882: Programming Language C++. Geneva 20, Switzerland, 1998. – reference: Veldhuizen TL. Expression templates. C++ Report 1995; 7(5):26-31. Reprinted in C++ Gems, Lippman S (ed.). – reference: Myers NC. Traits: A new and useful template technique. C++ Report 1995; 7:32-35. – reference: Lawson C, Hanson R, Kincaid D, Krogh F. Basic linear algebra subprograms for Fortran usage. ACM Transactions on Mathematical Software 1979; 5(3):308-323. – reference: Josuttis NM. The C++ Standard Library: A Tutorial and Reference. Addison-Wesley: Reading, MA, 1999. – reference: Austern MH. Generic Programming and the STL (Professional Computing Series). Addison-Wesley: Reading, MA, 1999. – reference: Gamma E, Helm R, Johnson R, Vlissides J. Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley Longman Publishing Co., Inc.: Reading, MA, 1995. – reference: Bavestrelli G. A class template for n-dimensional generic resizable arrays. C/C++ Users Journal 2000; 18:32-43. – start-page: 408 year: 1994 end-page: 418 – volume: 7 start-page: 26 issue: 5 year: 1995 end-page: 31 article-title: Expression templates publication-title: C++ Report – volume: 7 start-page: 32 year: 1995 end-page: 35 article-title: Traits: A new and useful template technique publication-title: C++ Report – start-page: 223 year: 1998 end-page: 230 – year: 2001 – year: 2004 – year: 2000 – year: 1995 – volume: 5 start-page: 308 issue: 3 year: 1979 end-page: 323 article-title: Basic linear algebra subprograms for Fortran usage publication-title: ACM Transactions on Mathematical Software – year: 1994 – year: 1998 – year: 1999 – start-page: 1 year: 1990 end-page: 10 – volume: 18 start-page: 32 year: 2000 end-page: 43 article-title: A class template for n‐dimensional generic resizable arrays publication-title: C/C++ Users Journal – volume: 7 start-page: 26 year: 1995 ident: 10.1002/spe.630-BIB17 publication-title: C++ Report – year: 2000 ident: 10.1002/spe.630-BIB8 – volume: 7 start-page: 32 year: 1995 ident: 10.1002/spe.630-BIB5 publication-title: C++ Report – volume-title: ISO/IEC Final Draft International Standard 14882: Programming Language C++ year: 1998 ident: 10.1002/spe.630-BIB6 – year: 2004 ident: 10.1002/spe.630-BIB12 – volume-title: Design Patterns: Elements of Reusable Object-oriented Software year: 1995 ident: 10.1002/spe.630-BIB11 – start-page: 408 volume-title: Object-Oriented Numerics Conference (OONSKI) year: 1994 ident: 10.1002/spe.630-BIB15 – start-page: 1 volume-title: Proceedings of Supercomputing '90 year: 1990 ident: 10.1002/spe.630-BIB9 – volume: 5 start-page: 308 year: 1979 ident: 10.1002/spe.630-BIB10 publication-title: ACM Transactions on Mathematical Software doi: 10.1145/355841.355847 – volume-title: ISCOPE year: 1998 ident: 10.1002/spe.630-BIB16 – volume-title: The C++ Standard Library: A Tutorial and Reference year: 1999 ident: 10.1002/spe.630-BIB1 – volume-title: STL Tutorial and Reference Guide year: 2001 ident: 10.1002/spe.630-BIB4 – volume-title: Generic Programming and the STL year: 1999 ident: 10.1002/spe.630-BIB3 – year: 1994 ident: 10.1002/spe.630-BIB2 – year: 2000 ident: 10.1002/spe.630-BIB7 – volume: 18 start-page: 32 year: 2000 ident: 10.1002/spe.630-BIB13 publication-title: C/C++ Users Journal – start-page: 223 volume-title: Proceedings of the 2nd International Scientific Computing in Object-Oriented Parallel Environments (ISCOPE'98) year: 1998 ident: 10.1002/spe.630-BIB14 doi: 10.1007/3-540-49372-7_24 |
| SSID | ssj0011526 |
| Score | 1.7352344 |
| SecondaryResourceType | review_article |
| Snippet | In C++, multi‐dimensional arrays are often used but the language provides limited native support for them. The language, in its Standard Library, supplies... |
| SourceID | crossref wiley istex |
| SourceType | Enrichment Source Index Database Publisher |
| StartPage | 159 |
| SubjectTerms | array programming Boost C++ generic programming Standard Template Library |
| Title | MultiArray: a C++ library for generic programming with arrays |
| URI | https://api.istex.fr/ark:/67375/WNG-PCGTSBR6-D/fulltext.pdf https://onlinelibrary.wiley.com/doi/abs/10.1002%2Fspe.630 |
| Volume | 35 |
| WOSCitedRecordID | wos000226738800003&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| hasFullText | 1 |
| inHoldings | 1 |
| isFullTextHit | |
| isPrint | |
| journalDatabaseRights | – providerCode: PRVWIB databaseName: Wiley Online Library - Journals customDbUrl: eissn: 1097-024X dateEnd: 99991231 omitProxy: false ssIdentifier: ssj0011526 issn: 0038-0644 databaseCode: DRFUL dateStart: 19960101 isFulltext: true titleUrlDefault: https://onlinelibrary.wiley.com providerName: Wiley-Blackwell |
| link | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwpV1LS8NAEF6k9eDF-sT6Yg-llxKbxybZCB5qH3qQUvrA3pbdza4UtZakiv57d5NttIggeAokM0mYR2Z2M_MNADUqJcZxzCwqkbCQZLYVxZRajiMojdRJ6ufDJsJ-H0-n0eDbqK8cH6LYcNOekX2vtYNTlja_QEPThbgIPLVaL7vKalEJlDvD3uSu-IWgAlOQYzJiS8VdlHfMauamYV0LRWUt1ff1FDWLMb3KP95uB2ybxBK2ckvYBRtivgcqq6EN0PjwPrjKWm5bSUI_LiGF7UYDmidBlb_CBw1DPePQ1G09q8gG9V4tpJojPQCTXnfcvrXMDAWL60BjCceVsfCF5IzhOGA44GHkMG5LpQbkM6Q0YgspRBiFEY914w4PmOJxkCt8ib1DUJq_zMURgIhq7B8chFQIhHXuxmnIPY49agsX4yqor8RJuAEY13MunkgOjewSJRSihFIFsCBc5JgaP0nqmT6K6zR51CVooU_u-zdk0L4Zj66HAelUQS1Tw283IqNBVx2O_0Z2ArYyaNasKvsUlJbJqzgDm_xtOUuTc2Nhnxog1oI |
| linkProvider | Wiley-Blackwell |
| linkToHtml | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwpV3dS8MwED9kE_TF-YnzMw9jL6Nu3dI2FXyY-xTnGPtA30KaJjLUObop-t-btNlkiCD4VGjv2nJ36V2ud78DyDEpCQnDwGISCwvLoGT5IWOWbQvGfHWSOcmwCa_bJQ8Pfs9UVepemAQfYplw0ysj_l7rBa4T0sVv1NDZVFy4FbVdT2NlRE4K0vV-c9RZ_kNQnslNQBmJpRwvTlpmNXPRsK74orQW68dqjBo7mWbmP6-3DVsmtETVxBZ2YE1MdiGzGNuAzCreg6u46bYaRezzEjFUKxSQeRRSESx61EDUY45M5daL8m1IZ2sR0xyzfRg1G8Na2zJTFCyuXY0l7LIMhSMkDwISugFxuefbAS9JpQjsBFjppCSkEJ7v-TzUrTvcDRSPjcvCkaRyAKnJ60QcAsJMo_8Q12NCYKKjN848XuGkwkqiTEgW8gt5Um4gxvWki2eagCOXqRIKVULJAloSThNUjZ8k-Vghy-ssetJFaJ5D77st2qu1hoPrvkvrWcjFevjtRnTQa6jD0d_IzmGjPbzr0M5N9_YYNmOg1rhG-wRS8-hNnMI6f5-PZ9GZMbcv9Pjacg |
| linkToPdf | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwpV3dS8MwEA_iRHxxfuL8zMPYy6hbu7RNBR_mvhTHGPvAvYU0vchQ5-im6H9v0maTIYLgU6HNteUu198lvfsdQnkuJaVRFFpcErCIDMtWEHFu2TZwHqiT3E2bTfidDh2Ngq7JqtS1MCk_xHLDTXtG8r3WDg7TSJa-WUNnU7j0Kmq5niFu4CmnzNR7zWF7-Q9BIZOXkjJSSwEvSUtmtXDJiK5gUUar9WM1Rk1Appn9z-vtoG0TWuJqOhd20RpM9lB20bYBGy_eR9dJ0W01jvnnFea4Vixi8yisIlj8qImoxwKbzK0XhW1Y79ZiriVmB2jYbAxqt5bpomAJDTUW2I6MwAUpwpBGXkg94Qd2KMpSGYK4IVE2KYME8AM_EJEu3RFeqGRs4oAraeUQrU9eJ3CEMOGa_Yd6PgcgVEdvgvuiImiFl8GhNIcKC30yYSjGdaeLZ5aSIztMKYUppeQQXg6cpqwaP4cUEoMsr_P4SSeh-S576LRYt9Ya9G96HqvnUD6xw283Yv1uQx2O_zbsAm12603Wvuvcn6CthKc1SdE-Revz-A3O0IZ4n49n8bmZbV-4Stnt |
| openUrl | ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=MultiArray%3A+a+C%2B%2B+library+for+generic+programming+with+arrays&rft.jtitle=Software%2C+practice+%26+experience&rft.au=Garcia%2C+Ronald&rft.au=Lumsdaine%2C+Andrew&rft.date=2005-02-01&rft.pub=John+Wiley+%26+Sons%2C+Ltd&rft.issn=0038-0644&rft.eissn=1097-024X&rft.volume=35&rft.issue=2&rft.spage=159&rft.epage=188&rft_id=info:doi/10.1002%2Fspe.630&rft.externalDBID=10.1002%252Fspe.630&rft.externalDocID=SPE630 |
| thumbnail_l | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=0038-0644&client=summon |
| thumbnail_m | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=0038-0644&client=summon |
| thumbnail_s | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=0038-0644&client=summon |