#include <list>应用

在看这篇文章之前,先看看#include <list>的简介。

#include <list>

这篇文章我来给大家几个list的应用。

应用

应用一

#include <iostream>
#include <list>
int main() {
    // 创建一个整数类型的列表
    std::list<int> numbers;
    // 向列表中添加元素
    numbers.push_back(10);
    numbers.push_back(20);
    numbers.push_back(30);
    // 访问并打印列表的第一个元素
    std::cout << "First element: " << numbers.front() << std::endl;
    // 访问并打印列表的最后一个元素
    std::cout << "Last element: " << numbers.back() << std::endl;
    // 遍历列表并打印所有元素
    std::cout << "List elements: ";
    for (std::list<int>::iterator it = numbers.begin(); it != numbers.end(); ++it) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;
    // 删除列表中的最后一个元素
    numbers.pop_back();
    // 再次遍历列表并打印所有元素
    std::cout << "List elements after removing the last element: ";
    for (std::list<int>::iterator it = numbers.begin(); it != numbers.end(); ++it) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;
    return 0;
}

应用二

#include <iostream>
#include <list>
int main() {
    std::list<int> lst = {1, 2, 3, 4, 5};
    auto it = lst.begin();
    std::advance(it, 2);          // 移动迭代器到第3个元素(值为3)
    lst.insert(it, 10);           // 在第3个元素前插入10
    lst.erase(it);                // 删除第3个元素
    // 输出链表内容
    std::cout << "List elements: ";
    for (const auto& elem : lst) {
        std::cout << elem << " ";
    }
    std::cout << std::endl;
    return 0;
}

应用三

#include <iostream>
#include <list>
int main() {
    std::list<int> lst = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
    lst.sort();                    // 排序
    lst.unique();                  // 删除相邻重复元素
    // 输出链表内容
    std::cout << "Sorted and unique list: ";
    for (const auto& elem : lst) {
        std::cout << elem << " ";
    }
    std::cout << std::endl;
    return 0;
}

应用四

#include <iostream>
#include <list>
int main() {
    std::list<int> lst1 = {1, 3, 5, 7};
    std::list<int> lst2 = {2, 4, 6, 8};
    lst1.merge(lst2);              // 合并两个已排序的链表
    lst1.reverse();                // 反转链表
    // 输出链表内容
    std::cout << "Merged and reversed list: ";
    for (const auto& elem : lst1) {
        std::cout << elem << " ";
    }
    std::cout << std::endl;
    return 0;
}

### `#include <QAxObject>` 的使用方法 `QAxObject` 是Qt提供的一个用于与ActiveX控件进行交互的类。在Qt中,使用 `QAxObject` 可以方便地调用ActiveX对象的方法和属性。调用ActiveX方法的语法结构主要取决于使用的编程语言和框架,在Qt里,可利用 `QAxWidget` 和 `QAxObject` 的成员函数来调用ActiveX对象的方法,基本语法结构如下: ```cpp QAxObject *object = ...; // 获取ActiveX对象的指针 object->dynamicCall("MethodName([parameters])"); ``` 例如,创建一个Excel应用程序对象的代码如下: ```cpp QAxObject *excel = new QAxObject("Excel.Application", 0); ``` ### `#include <QAxObject>` 的作用 `QAxObject` 主要用于在Qt应用程序中与ActiveX控件进行交互。通过 `QAxObject`,可以在Qt程序中调用ActiveX对象的方法和属性,实现对外部应用程序(如Excel)的控制。当Qt使用 `QAxObject` 调用 `new QAxObject("Excel.Application")` 时,实际上是通过COM接口创建了一个Excel进程实例,并通过IDispatch接口远程调用其方法(如 `Workbooks.Open()` 、 `Range.Value` 等)。这种方式无需了解文件结构细节,但代价是启动完整Excel应用程序,带来显著资源开销 [^2]。 ### 与通过Excel存储日志数据信息的关联 在通过Excel存储日志数据信息时,`QAxObject` 可以用来创建Excel应用程序实例,打开或创建Excel工作簿,操作工作表和单元格,将日志数据写入Excel文件。以下是一个简单的示例代码,展示了如何使用 `QAxObject` 将日志数据存储到Excel文件中: ```cpp #include <QAxObject> #include <QStringList> #include <QDebug> void saveLogToExcel(const QStringList& logData) { QAxObject* excel = new QAxObject("Excel.Application", 0); excel->dynamicCall("SetVisible(bool)", false); QAxObject* workbooks = excel->querySubObject("Workbooks"); QAxObject* workbook = workbooks->querySubObject("Add"); QAxObject* worksheets = workbook->querySubObject("Worksheets"); QAxObject* worksheet = worksheets->querySubObject("Item(int)", 1); for (int i = 0; i < logData.size(); ++i) { QAxObject* cell = worksheet->querySubObject("Cells(int, int)", i + 1, 1); cell->dynamicCall("SetValue(const QVariant&)", QVariant(logData[i])); delete cell; } QString filePath = "log.xlsx"; workbook->dynamicCall("SaveAs(const QString&)", QDir::toNativeSeparators(filePath)); workbook->dynamicCall("Close()"); excel->dynamicCall("Quit()"); delete worksheet; delete worksheets; delete workbook; delete workbooks; delete excel; } int main(int argc, char *argv[]) { QStringList logData; logData << "Log entry 1" << "Log entry 2" << "Log entry 3"; saveLogToExcel(logData); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值