Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+;中使用字符串成员作为索引更新自定义结构的最佳方法+;_C++_Containers - Fatal编程技术网

C++ 在C+;中使用字符串成员作为索引更新自定义结构的最佳方法+;

C++ 在C+;中使用字符串成员作为索引更新自定义结构的最佳方法+;,c++,containers,C++,Containers,我的结构如下: struct SensorData { std::string sensor_name; int state; int percentage; }; 我正在接收/更新此结构,并希望将其存储在数组/向量/列表中,以跟踪百分比值 每次我收到数据包时,我都应该检查其名称并更新其字段 试图找到一种更有效的方法来做到这一点?尝试避免重复条目,并使用“传感器名称”成员作为索引 建议?我建议将传感器名称与数据分开,并构建两个相关结构(SensorData和Sensor

我的结构如下:

struct SensorData {
    std::string sensor_name;
    int state;
    int percentage;
};
我正在接收/更新此结构,并希望将其存储在数组/向量/列表中,以跟踪百分比值

每次我收到数据包时,我都应该检查其名称并更新其字段

试图找到一种更有效的方法来做到这一点?尝试避免重复条目,并使用“传感器名称”成员作为索引


建议?

我建议将传感器名称与数据分开,并构建两个相关结构(
SensorData
SensorInput
),一个包含另一个。使用
std::map
[1]可以通过
string
键轻松存储和更新数据

请参见以下示例:

#include <map>

struct SensorData {
    int state;
    int percentage;
};
struct SensorInput {
    std::string name;
    SensorData data;
};

std::map<std::string, SensorData> g_sensor;

void update(const SensorInput& input) 
{
   g_sensor[input.name] = input.data;
}
#包括
结构传感器数据{
int状态;
整数百分比;
};
结构传感器输入{
std::字符串名;
传感器数据;
};
标准:map g_传感器;
无效更新(常量传感器输入和输入)
{
g_传感器[input.name]=input.data;
}
。。。它包括一个全局变量和一个简单的函数来保持它的简短


[1]
<代码> STD::MAP< /COD>模板是C++中已经存在的C++中的一个关联容器的传统实现,为了更复杂,可能更有效的解决方案,请参阅CPopPyr.com上的文章< 98】。p> 可能使用?使用
std::unordered_map
来执行此操作。每次收到数据包时,我都应该检查名称并更新其字段。-希望您知道,一般来说,用于这种情况的数据结构称为。一个C++中的哈希表被拼写为<代码> STD::unordeDeMAP。或者,你可能需要为每个传感器存储一个以上的百分比值吗?谢谢你的答案。这似乎是一个简单的实现。我的map目标是存储/更新传感器百分比值,从0到100。因此,我将迭代映射,直到我可以在所有项中读取100;对于(it=g_sensor.begin();it!=g_sensor.end();it++){std::cout first//string(key)在这种情况下,最好是把传感器从地图上移到100%,不要在“代码>更新/代码>函数中直接访问这些项目。您最初知道要跟踪哪些传感器吗?请考虑将这些细节添加到您的问题中。谢谢:)