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...

Celý popis

Uloženo v:
Podrobná bibliografie
Vydáno v:Software, practice & experience Ročník 35; číslo 2; s. 159 - 188
Hlavní autoři: Garcia, Ronald, Lumsdaine, Andrew
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