我有以下類似的簡單結構std::pair。我想投射兩個指標keys和Values一個指向pair. 我怎樣才能做到這一點?
謝謝!
K* keys;
V* Values;
/*
length of keys = length of Values
goal: operation(keys, Values) ---> pair*
*/
template <typename K, typename V, K EmptyKey = K(-1)> struct pair {
K first;
V second;
static constexpr auto empty_key = EmptyKey;
bool empty() { return first == empty_key; }
};
uj5u.com熱心網友回復:
您必須將keys和復制values到對中。
template <typename K, typename V>
pair<K, V>* KVToPairs(const K* k, const V* v, unsigned int length) {
if (!k || !v) {
return nullptr;
}
pair<K, V>* pairs = new pair<K, V>[length];
for (unsigned int i = 0; i < length; i) {
pairs[i].first = *(k i);
pairs[i].second = *(v i);
}
return pairs;
}
看演示
如果你不想要副本。也許你應該改變 的定義pair,比如
template <typename K, typename V, K EmptyKey = K(-1)> struct pair {
const K* first = nullptr;
const V* second = nullptr;
static constexpr auto empty_key = EmptyKey;
bool empty() { return !first || *first == empty_key; }
};
KVToPairs除了pairs賦值部分,功能幾乎相同。
看演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/397638.html
