更新STL矢量中的数据
Updating data in STL vector
我有下面的向量
vector<CarRecord> FileRecords;
CarRecord
是这样一个结构:
typedef struct
{
char carName[14];
eStatus carStatus;
eCarType carType;
} CarRecord;
我有一个使用这个向量的类,我遇到了一些问题:我不知道如何编写Update(CarRecord *Rec, eStatus NewStatus);
函数。
我在这里发现了一个问题,答案是这样的:
vector[index] = newValue;
但我不知道如何找到我的具体物品。
编辑:
我的矢量目前看起来像这样,例如:
Name Type Status
Nissan 4 1
Peugeot 3 1
在状态下,1
表示Available
,0
表示Unavailable
。
我需要什么?我需要我的函数来查找名为Peugeot
的记录,并将类型更改为NewType
参数的值。
要查找特定记录,可以使用类似的东西吗
std::vector<CarRecord>::iterator iter;
iter = std::find(FileRecords.begin(), FileRecords.end(), recordToFind);
那么*iter应该指向你想要查找的唱片?如果这是错误的,我很抱歉
为什么在这里使用矢量?这看起来更适合地图。
旁白:您的代码看起来像C加或减,而不是C++。去掉typedef,将char[14]
改为std::string
。
从char[14]
到std::string
,std::map<std::string, CarRecord>
看起来非常适合您的问题。地图的索引是汽车的名称,而不是某个整数。
报价:
要找到特定的记录,你可以使用类似的东西吗
std::vector<CarRecord>::iterator iter;
iter = std::find(FileRecords.begin(), FileRecords.end(), recordToFind);
结尾引用"fiveoak"。
fiveoak所说的是对的,您可以使用std::find来查找特定的记录,如上所示。
要使用std::find,还需要定义自己的相等运算符,即覆盖相等运算符
在头文件中将您的CarRecord更改为这样
struct CarRecord
{
char carName[14];
eStatus carStatus;
eCarType carType;
bool operator ==(CarRecord const& other) const;
} ;
//将其放入另一个cpp文件中#包括"your_car_record_header.h"#包括
bool CarRecord::operator ==(CarRecord const& other);
{
return std::strcmp(carName, other.carName) == 0;
}
我也同意David Hammen所说的,最好使用std::string而不是char数组。
我认为这将解决您的问题
bool Update(char *car, eCarType newType)
{
auto it = std::find_if(FileRecords.begin(),
FileRecords.end(),
[=](const CarRecord& c ){
return strstr(c.carName,car) != ' ';
}
);
if(it != FileRecords.end())
{
it->carType = newType;
return true;
}
return false;
}
相关文章:
- 在学习数据结构之前对STL有一个了解是好的吗?
- 哪些存储了不完整类型的 STL 数据结构可以用作类成员?
- 如何在不破坏现有应用程序的情况下更改 API 中 stl 容器的数据类型?
- 如何知道用于实现标准代码段的确切数据结构和算法,例如在C++STL中?
- C++ STL 数据结构常时按索引推送/弹出/随机访问,并具有指向元素的可靠指针
- 用现代C++STL数据结构替换旧的C风格数组
- 嵌套的 STL 数据结构
- 将 stl 数据结构传递给 opencl 内核
- 在C 中,对Pair类STL的用途是什么,就像数据类型或容器一样
- 我应该如何在恒定长度的 STL 样式数据结构中实现max_size?
- 使用队列和列表 STL 进行C++分配。在将数据填充到列表或队列中然后打印该数据时遇到问题
- 是STL中的联合获取(或不连接集)数据结构
- STL:在大量数据中进行分类和搜索
- 使用 stl::map 和 stl::unordered_map 对包含大量重复元素的数组数据进行排序
- 在C++中,是否可以引用像C++中的stl列表这样的数据结构部分
- stl 中是否有任何数据结构可以在 O(1) 或 O(log n) 中插入元素,我可以在其上编写自己的bin_searc
- C /STL公共迭代器,用于深嵌套的私人数据
- 调用C 功能,其中包含来自C的STL数据类型
- STL数据结构中的智能指针的用例
- 为什么大多数STL算法都需要将排序数据作为输入