获取字符顺序总和的最快方法
The fastest way to get the sum of character orders?
我正试图找到最快的方法来获得字符串中字符顺序的总和
例如,如果字符串包含:
ABAACA;
那么字符A的总和将是:
(A=0)+(A=2)+(A=3)+(A=5)=10;
A=10;
我知道一些方法,但花的时间太长了,你能告诉我怎样才能得到最快的金额吗?
我认为用C++实现这一点的最快方法(因为没有其他方法可以描述您的问题)涉及并行处理:
- 并行扫描和就地索引
- 减少
尽管这可能不是你想要的。
最快的非并行解决方案:
-仔细检查每一个字符。
-如果匹配则增加计数(if(ch=='A')count+=i;
)。
没有更快的方法,因为你必须访问每个角色。
不管怎样,如果你有一个有效的解决方案,它可能已经是最快的了。。
如果没有并行工具,最快的解决方案就是访问循环中的每个字符并增加sum。
int count_match ( char* str, int length, char digit )
{
int output = 0;
for ( int index = 0; index < length; ++ index )
output += index & - (str[index] == digit);
return output;
}
如果字符串的长度在编译时是已知的,那么可以设想将该值模板化,并让编译器为您向量化循环。
相关文章:
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 犰狳的 print() 方法和 cout 在从 Rcpp 调用时顺序不一致
- #include < conio.h> 和 getch() 方法之间的关系是什么?
- 如何通过python方法和kwargs来提升python的c++函数和调用
- 一种优雅或至少可行的方法,用于使用和接受具有重载方法和运算符的不同大小的文字数组常量
- 类的方法和对象。参考?智能指针?简单的初始化?
- 在类中定义数组的方法和字段
- 是否可以基于类模板的参数调用类方法和全局方法
- 具有相同名称的方法和内部类(错误:.. 与前面的声明冲突)
- 返回混合 \ 和 / 的文件系统路径字符串方法
- 设计模式中对象中的过程(方法和操作)的状态
- 类方法和全局函数中的别名
- 基类中的虚拟方法和子类中的非 Virtula 方法.仍然如何调用子类方法,即使它是非虚拟的
- C 将方法和字段带入外部范围,而无需明确的参考
- 创建接口和混凝土类并在向量中使用它们会导致调用方法时的怪异行为
- 定义可以执行对象方法和独立函数的函数时出现问题
- 当类方法和宏具有相同的名称时如何解决它
- 空隙和非空隙方法之间的Sfinae调度
- Dll和非模板类中模板方法中的静态变量
- C++ - 方法和重载中的常量关键字