[英]C++ arithmetic with pointers
我正在嘗試添加以下內容:
我有一個雙指針數組稱為A。我有另一個雙指針數組稱為B,而我有一個無符號的int稱為C。
所以我想做:
A[i] = B[i] - C;
我該怎么做? 我做了:
A[i] = &B[i] - C;
我認為我沒有正確執行此操作。
編輯:我想做的是,獲取雙指針數組的索引i處的值,並從中減去一個int,然后將結果存儲到索引i的雙指針數組中。
您的問題尚不清楚,但是如果A和B是要加倍的指針的數組,並且您想用固定數量的正好C來更改每個指針,那么對於A中的每個元素:
A [i] = B [i]-C;
應該這樣做。 &B [i]接受指針本身的地址,因此完全不同。
樣例代碼:
for(int i = 0; i <size_of_A; ++ i)A [i] = B [i]-C;
C ++沒有簡單的映射語法,您要么
(1)使用循環
for (int i = 0; i < 1482; ++ i)
A[i] = B[i] - C;
(2)在<algorithm>
使用std::transform
:
#include <functional>
#include <algorithm>
...
std::transform(B, B+1482, A, std::bind2nd(std::minus<double>(), C));
(可能有一個Boost庫來簡化此過程。)
您想要的是:
&( *B[i] - C )
但是我認為您不能將其直接分配給A [i]。 首先,您必須創建一個臨時(double)數組。
for(int i=0; i< size_of_B; i++){
T[i] = *B[i] - C;
}
for(int i=0; i< size_of_T; i++){
A[i] = &T[i];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.