在啥意义上 valarray 没有混叠?
Posted
技术标签:
【中文标题】在啥意义上 valarray 没有混叠?【英文标题】:In what sense is valarray free from aliasing?在什么意义上 valarray 没有混叠? 【发布时间】:2014-10-20 17:20:04 【问题描述】:经常有人声称std::valarray
旨在消除某些形式的别名以实现更好的优化(例如,参见valarray vs. vector: Why was valarray introduced?)
谁能详细说明这一说法?在我看来,只要您可以获得指向元素的指针,别名总是可能的——您可以获得,因为operator[]
返回一个引用。
【问题讨论】:
不同之处在于,如果有别名,那是你的错;-) 使用 valarray 你承诺不这样做。 【参考方案1】:“无别名”是指像cos
这样接受valarray
作为参数的全局函数。 cos
(或任何函数)被应用于整个数组,编译器和标准库实现可以假设数组没有别名并且可以独立地对每个元素执行操作。
它也指诸如valarray
的operator+
之类的东西,它会进行成员添加等。
【讨论】:
"可以假设数组没有别名" - 没有别名,为什么valarray
是这种情况而不是任何其他类型的数组?以上是关于在啥意义上 valarray 没有混叠?的主要内容,如果未能解决你的问题,请参考以下文章