我需要在兩個向量之間進行按位運算。我不想使用循環。 我正在使用犰狳。任何人都可以幫助我嗎?犰狳向量上的按位運算
編輯:
通過矢量我的意思是由犰狳庫提供一個矢量模板。像這樣:
urowvec newvec1 =零< urowvec>(5);
urowvec newvec2 = ones < urowvec>(5);
urowvec newvec3 = newvec1 | newvec2;
但這給了我錯誤與犰狳。
感謝
我需要在兩個向量之間進行按位運算。我不想使用循環。 我正在使用犰狳。任何人都可以幫助我嗎?犰狳向量上的按位運算
編輯:
通過矢量我的意思是由犰狳庫提供一個矢量模板。像這樣:
urowvec newvec1 =零< urowvec>(5);
urowvec newvec2 = ones < urowvec>(5);
urowvec newvec3 = newvec1 | newvec2;
但這給了我錯誤與犰狳。
感謝
如果您實現這一點:
inline urowvec operator|(const urowvec& lhs, urowvec& rhs){
// ToDo - operate on an element by element basis, and return
// a urowvec. Decide on something reasonable if the vectors
// differ in size.
}
,並確保這是包含在每個編譯單元中要求操作,然後urowvec newvec3 = newvec1 | newvec2;
將是有效的。
您可以爲其他按位運算符做同樣的事情。
任何合理的編譯器將elide的值複製。
謝謝。是否也可以通過使用SIMD命令來加速按位操作?如同,如果我可以一次操作整個向量(或其一部分),而不是進行元素明智的操作。 – user1482353 2015-03-13 17:41:58
做到位操作使用位運算符
| bitwise or
& bitwise and
^ bitwise xor
~ bitwise not
<< bitwise shift left
>> bitwise shift right
,如果你給一個更具體的問題,你可能會得到更具體的答案。通過矢量你是指一個std :: vector,它是一個ints矢量嗎?或者你的意思是一些位?
我編輯了我的問題。希望能夠說清楚。 – user1482353 2015-03-13 14:34:22
我不能直接用犰狳向量使用按位操作 – user1482353 2015-03-13 14:37:52
同樣在這裏。 boolen的經營者不工作犰狳類型。試試這個吧, ucube a =零
你是什麼意思?在最低級別,*每個*計算都是按位。 – Bathsheba 2015-03-13 14:21:53
我不是指在最低水平。我正在談論邏輯按位運算,比如AND,OR等等。 – user1482353 2015-03-13 14:26:51
嘗試std :: valarray – user3528438 2015-03-13 15:24:48