osg.ValueMap
是OpenSceneGraph中的类,它用于存储一组键值对,其中键和值都可以是各种类型的数据。
以下为osg.ValueMap
的构造函数:
osg::ValueMap()
void insert(const std::string& key, const osg::ref_ptr<osg::Object>& value)
插入一个键值对,键为字符串类型,值为一个osg::Object
类型的ref_ptr
。
void insert(const std::string& key, bool value)
void insert(const std::string& key, char value)
void insert(const std::string& key, short value)
void insert(const std::string& key, int value)
void insert(const std::string& key, long value)
void insert(const std::string& key, float value)
void insert(const std::string& key, double value)
void insert(const std::string& key, const std::string& value)
插入一个键值对,键为字符串类型,值为bool
、char
、short
、int
、long
、float
、double
或std::string
类型的数据。
void remove(const std::string& key)
移除指定键的键值对。
void removeValue(const osg::ref_ptr<osg::Object>& value)
移除指定值的键值对。
void clear()
清空所有键值对。
bool contains(const std::string& key) const
检查是否包含指定的键。
bool empty() const
检查是否为空。
size_t size() const
获取键值对的数量。
osg::ref_ptr<osg::Object> get(const std::string& key) const
获取指定键的值,如果不存在则返回NULL
。
bool get(const std::string& key, bool& value) const
bool get(const std::string& key, char& value) const
bool get(const std::string& key, short& value) const
bool get(const std::string& key, int& value) const
bool get(const std::string& key, long& value) const
bool get(const std::string& key, float& value) const
bool get(const std::string& key, double& value) const
bool get(const std::string& key, std::string& value) const
获取指定键的值,如果不存在或类型不匹配则返回false
,否则将值赋给value
。
以下是对osg.ValueMap
的示例使用:
// 创建一个ValueMap对象
osg::ValueMap vm;
// 添加一些键值对
bool b = true;
vm.insert("boolValue", b);
char c = 'A';
vm.insert("charValue", c);
short s = 123;
vm.insert("shortValue", s);
int i = 456;
vm.insert("intValue", i);
long l = 789;
vm.insert("longValue", l);
float f = 1.23f;
vm.insert("floatValue", f);
double d = 4.56;
vm.insert("doubleValue", d);
std::string str = "Hello world!";
vm.insert("stringValue", str);
// 查询某个键的值
if (vm.contains("boolValue")) {
bool bv;
if (vm.get("boolValue", bv)) {
osg::notify(osg::NOTICE) << "boolValue = " << bv << std::endl;
}
}
// 移除某个键值对
vm.remove("stringValue");