2012-06-21 19 views
5

valarray में असीमित स्मृति संरेखण है?क्या वालराय में संगत स्मृति संरेखण है?

मैं एक फ़ंक्शन (आईपीपीएस से) के लिए एक वैलराय पास करना चाहता हूं, जो केवल &myValarray[0] पास करके पॉइंटर्स लेता है। लेकिन इसलिए मुझे यकीन होना चाहिए कि वालराय की स्मृति संरेखण संगत है।

धन्यवाद!

+2

कोई अभी भी वालराय का उपयोग कर रहा है? – Puppy

+1

@DeadMG विकल्प क्या है? केवल वैल्यू रखने वाले वैक्टरों का उपयोग करना चाहते हैं, और यदि संभव हो तो उनका उपयोग मटकाब में सुविधाजनक होना चाहिए। और valarrays लगता है क्योंकि वे मेरी जरूरत को पूरा कर सकते हैं (संख्यात्मक गणना के लिए)। – Massoud

+0

@DeadMG मैं इसे नियमित रूप से उपयोग करता हूं। इसका इंटरफ़ेस जेनेरिक एल्गोरिदम लिखना आसान बनाता है जो स्केलर और वैक्टर दोनों के साथ काम करता है। और चूंकि यह मानक का हिस्सा है, इसलिए आपको अभी तक एक और पुस्तकालय पर भरोसा नहीं करना है। –

उत्तर

11

मान लिया जाये कि आप पूछ रहे हैं स्मृति एक valarray द्वारा प्रबंधित सन्निहित होने की गारंटी है, तो जवाब है हां, कम से कम अगर वस्तु const (सी ++ 03 नहीं है, चाहे, §26.3.2.3/3 या सी ++ 11, §26.6.2.4/2):

अभिव्यक्ति & एक == & एक [i] + J सब size_t के लिए के रूप में सच का मूल्यांकन करता है [मैं j +] मैं और size_t j इस तरह के कि i + j गैर-निरंतर सरणी की लंबाई से कम है।

+0

धन्यवाद @ जेरी कॉफिन, क्या मैं पूछ सकता हूं, इस आवश्यकता को पूरा करने के लिए वालराय क्यों स्थिर नहीं हो सकता है? – Massoud

+0

@ मासौद: यदि स्मृति सेवा करता है, तो आप 'कॉन्स्ट वैलरे' के तत्व पर '&' का उपयोग नहीं कर सकते हैं। –

+0

@ जेरीकॉफिन: 'कॉन्स्ट टी एंड ऑपरेटर [] (std :: size_t pos) const;' C++ 11 के बाद उपलब्ध है। –