C++字符列表转整数列表无需循环重计算的实现咨询
实现方法
方法1:使用std::transform标准算法(兼容C++11及以上版本)
借助标准库算法无需手动编写for循环遍历逻辑,首先需要引入头文件:
#include <algorithm>
替换你原有std::list<int>构造的代码即可:
std::list<int> listInt; listInt.reserve(listCharInt.size()); std::transform(listCharInt.begin(), listCharInt.end(), std::back_inserter(listInt), [](char c) { // 用'0'代替硬编码48,兼容性更强,不受字符集限制 return c - '0'; });
你也可以完全跳过std::list<char>中间层,直接从字符串构造目标整数列表,性能更高:
std::list<int> listInt; std::transform(int1.begin(), int1.end(), std::back_inserter(listInt), [](char c) { return c - '0'; });
方法2:C++20 范围视图实现
如果你的编译器支持C++20标准,可以用范围适配器写出更简洁的代码,需要引入头文件:
#include <ranges>
构造代码:
auto char_to_int = [](char c) { return c - '0'; }; std::list<int> listInt = listCharInt | std::views::transform(char_to_int) | std::ranges::to<std::list>();
内容的提问来源于stack exchange,提问作者muhammadyasin89
相关产品推荐
相关产品推荐

