增强参数转发的性能

时间:2015-05-23 17:25:00

标签: c++ interface operators getter

我甚至不知道参数转发的想法是否是一个实际主题,或者该术语是否正确描述了我的想法。我将从一个例子开始。

.filter

在这里,var $html = $( html ); offset += $html.filter('div.post').length; 确实是一种向量,或者看起来就像是某种向量。它表示编号元素的集合,每个元素都有两个(比如说是double)属性。如您所见,这些属性只能通过getter方法访问,因为在返回实际值之前需要执行一些复杂的计算。

现在,我想做的是使class sort_of_vector { // Some data here. Much data. size_t size; double property1(unsigned int index) { // Do some computation on the index and data. } double property2(unsigned int index) { // Do some computation on the index and data. } }; 在接口方面与实际向量更相似。我希望sort_of_vector可以对其进行调用,因此我可以通过sort_of_vector调用[] operatorproperty1的getter。

有一种简单的方法可以做到这一点:

property2

这显然有效,但在性能方面存在一些问题。原则上,访问某个项目的[] operatorclass sort_of_vector { // Same as before sort_of_vector_proxy operator [] (unsigned int index) { return sort_of_vector_proxy(this, index); } }; class sort_of_vector_proxy { sort_of_vector * vector; unsigned int index; sort_of_vector_proxy(sort_of_vector * vector, unsigned int index) { this->vector = vector; this->index = index; } double property1() { return this->vector->property1(this->index); } double property2() { return this->vector->property1(this->index); } }; 意味着设置一个全新的property1设置其属性,通过它调用实际的getter并将其删除。

所以我想知道是否有更多有效的解决方案可以使我的property2更加类似于这种方式的向量(sort_of_vector_proxy),但没有任何性能下降。

0 个答案:

没有答案