收藏文章 楼主

动态数组变量的增删改查写入读取修改-c++

版块:C/C++语言开发   类型:普通   作者:小绿叶技术博客   查看:146   回复:0   获赞:0   时间:2025-03-05 17:30:50


#include <iostream>
#include <vector>
#include <string>
#include <sstream>

// 定义一个结构体来存储每行数据
struct Record {
    std::string ip;
    int value;
    std::string date;
};

// 写入数据到内存
void writeToMemory(std::vector<Record>& records, const std::string& ip, int value, const std::string& date) {
                                                        // & records  其中的  & 表示引用来自其它函数传来的内存地址来使用并且重新命名动态数组类型名字,而不是新建一个内存地址
    Record newRecord;                                  
    newRecord.ip = ip;
    newRecord.value = value;
    newRecord.date = date;
    records.push_back(newRecord);                       // 动态数组的追加
}

// 读取内存中的数据并打印
void readFromMemory(const std::vector<Record>& records) {
    for (const auto& record : records) {                // auto 自动类型; record 获取 records 对象, 内存扩展到多个对象。
        std::cout << record.ip << " " << record.value << " " << record.date << std::endl; // 对象里面的成员
    }
}

// 修改内存中的数据,以 IP 为索引
void modifyRecord(std::vector<Record>& records, const std::string& oldIp, const std::string& newIp, int newValue, const std::string& newDate) {
    for (auto& record : records) {                      // 全部循环读取,然后判断ip是指定ip。
        if (record.ip == oldIp) {
            record.ip = newIp;
            record.value = newValue;
            record.date = newDate;
            return;
        }
    }
    std::cerr << "未找到 IP 为 " << oldIp << " 的记录,无法修改。" << std::endl;
}

// 删除内存中的数据,以 IP 为索引
void deleteRecord(std::vector<Record>& records, const std::string& ipToDelete) {
    for (auto it = records.begin(); it != records.end(); ++it) {    
        if (it->ip == ipToDelete) {                     // 循环遍历的开始和结束游标命令 begin, end
            records.erase(it);                          // erase 移除元素
            return;
        }
    }
    std::cerr << "未找到 IP 为 " << ipToDelete << " 的记录,无法删除。" << std::endl;
}

int main() {
    std::vector<Record> records;                        // std::vector 动态数组容器; push_back 追加元素; size 获取元素数量; erase 删除指定位置元素
                                                        // 定义一个 Record 结构体三个元素类型的动态数组容器
    // 写入数据到内存
    for(int i=0;i<10; i++){
        writeToMemory(records, "10.1.1." + std::to_string(i), 999, "20241101");
                                                        // std::to_string 转换为目标的str字符串类型。
    }


    // 读取并打印数据
    std::cout << "初始数据:" << std::endl;
    readFromMemory(records);

    // 修改数据
    modifyRecord(records, "10.1.1.1", "10.1.1.1", 777, "20241103");
    std::cout << "\n修改后的数据:" << std::endl;
    readFromMemory(records);

    // 删除数据
    deleteRecord(records, "10.1.1.2");
    std::cout << "\n删除后的数据:" << std::endl;
    readFromMemory(records);

    return 0;
}




本文章最后由 admin2025-03-12 17:26 编辑

提供企业建站服务,主机监控系统【软著登字第15121829号】提交信息登录 http://yundun.ddoss.cn 邮箱: proposal@ddoss.cn 
回复列表
默认   热门   正序   倒序

回复:动态数组变量的增删改查写入读取修改-c++

头像

用户名:

粉丝数:

签名:

资料 关注 好友 消息