当前位置: 首页>>代码示例>>C++>>正文


C++ DataNode::getHash方法代码示例

本文整理汇总了C++中DataNode::getHash方法的典型用法代码示例。如果您正苦于以下问题:C++ DataNode::getHash方法的具体用法?C++ DataNode::getHash怎么用?C++ DataNode::getHash使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在DataNode的用法示例。


在下文中一共展示了DataNode::getHash方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: get

int* LBEHashMap::get(std::string key) {
	lock.lock();
	char* hash = hashKey(key, keySize);
	Node* local = head;

	for (int R = 0; R < keySize; R += 1) {
		int pos = (int) hash[R];
		Node* node = getNode(local, pos);
		if (isArrayNode(node)) {
			local = node;
		} else {
			DataNode* dataNode = dynamic_cast<DataNode*>(node);
			if ((dataNode != nullptr) && hashEqual(dataNode->getHash(), hash, keySize)) {
				lock.unlock();
				return &(dataNode->value);
			} else {
				lock.unlock();
				return nullptr;
			}
		}
	}

	lock.unlock();
	return nullptr;
}
开发者ID:AgamAgarwal,项目名称:wait-free-extensible-hash-map,代码行数:25,代码来源:LBEHashMap.cpp

示例2: put

bool LBEHashMap::put(std::string key, int value) {
	lock.lock();
	char* hash = hashKey(key, keySize);
	Node* insertThis = allocateNode(value, key, keySize);
	Node* local = head;

	for (int R = 0; R < keySize; R++) {
		int pos = (int) hash[R];
		Node* node = getNode(local, pos);
		if (isArrayNode(node)) {
			local = node;
		} else {
			DataNode* dataNode = dynamic_cast<DataNode*>(node);
			if (dataNode == nullptr) {
				//adding new node
				dynamic_cast<ArrayNode*>(local)->array[pos] = insertThis;
				lock.unlock();
				return true;
			} else if (hashEqual(dataNode->getHash(), hash, keySize)) {
				//replace old node
				dynamic_cast<ArrayNode*>(local)->array[pos] = insertThis;
				delete node;
				lock.unlock();
				return true;
			} else {
				//expand
				local = expandTable(local, pos, insertThis, R);
			}
		}
	}

	lock.unlock();
	return false;
}
开发者ID:AgamAgarwal,项目名称:wait-free-extensible-hash-map,代码行数:34,代码来源:LBEHashMap.cpp


注:本文中的DataNode::getHash方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。