我有一个文本文件,每行包含一个或多个整数,由空格分隔.我怎样才能以优雅的方式用C++阅读这篇文章?如果我不关心线条,我可以使用cin >>,但重要的是哪一行是整数.
输入示例:
1213 153 15 155
84 866 89 48
12
12 12 58
12
Run Code Online (Sandbox Code Playgroud) 例如,有没有办法读取这样的格式化字符串:48754+7812=Abcs.
假设我有三个stringz X,Y和Z,我想要
X = 48754
Y = 7812
Z = Abcs
Run Code Online (Sandbox Code Playgroud)
两个数字的大小和字符串的长度可能会有所不同,所以我不想使用substring()或类似的东西.
是否有可能为C++提供这样的参数
":#####..+####..=SSS.."
Run Code Online (Sandbox Code Playgroud)
所以它直接知道发生了什么?
如果在a std::thread和主线程(或任何其他线程)之间共享变量,即使thread::detach()在创建线程后立即执行该方法,您仍然可以访问这些共享变量吗?
作为一个懒惰的开发人员,我喜欢使用这个技巧来指定一个默认函数:
template <class Type, unsigned int Size, class Function = std::less<Type> >
void arrange(std::array<Type, Size> &x, Function&& f = Function())
{
std::sort(std::begin(x), std::end(x), f);
}
Run Code Online (Sandbox Code Playgroud)
但是在一个非常特殊的情况下我遇到了一个问题,如下所示:
template <class Type, unsigned int Size, class Function = /*SOMETHING 1*/>
void index(std::array<Type, Size> &x, Function&& f = /*SOMETHING 2*/)
{
for (unsigned int i = 0; i < Size; ++i) {
x[i] = f(i);
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我希望默认函数相当于:( [](const unsigned int i){return i;}一个只返回传递值的函数).
为了做到这一点,我需要写什么而不是/*SOMETHING 1*/和/*SOMETHING 2*/?
所以,我期待在不同的键:值(其中值是严格意义上的单值或可能的对象)用于存储和Python的使用,并已发现了一些有前途的.我还没有具体要求,因为我处于评估阶段.我正在寻找什么是好的,什么是坏的,这些东西处理得好或不合适的角落情况等等.我相信你们中的一些人已经尝试过它们所以我很想听听你们的发现/问题/等等.在各种关键:使用Python的值存储.我主要看的是:
memcached - http://www.danga.com/memcached/ python客户端:http ://pypi.python.org/pypi/python-memcached/1.40 http://www.tummy.com/Community/software/python- memcached的/
CouchDB - http://couchdb.apache.org/ python客户端:http://code.google.com/p/couchdb-python/
东京暴君 - http://1978th.net/tokyotyrant/ python客户:http://code.google.com/p/pytyrant/
Lightcloud - http://opensource.plurk.com/LightCloud/基于东京暴君,用Python编写
Redis - http://redis.io/ python客户端:http://pypi.python.org/pypi/txredis/0.1.1
MemcacheDB - http://memcachedb.org/
所以我开始基准测试(简单地插入键并读取它们),使用简单的计数生成数字键和值"短文本字符串":
memcached:CentOS 5.3/python-2.4.3-24.el5_3.6,libevent 1.4.12-stable,memcached 1.4.2,默认设置,1 gig内存,每秒14,000次插入,16,000秒读取.没有真正的优化,很好.
memcachedb声称每秒17,000到23,000次插入,每秒44,000到64,000次读取.
我也想知道其他人如何加快速度.
我正在阅读Burrows和Wheeler论文中的块排序算法.这是算法的一个步骤:
假设S = abracadabra
初始化N个字W [0,...,N-1]的数组W,使得W [i]包含排列的字符S'[i,...,i + k-1],以便进行整数比较.这些词同意对k字符串的词典比较.将字符打包成单词有两个好处:它允许使用对齐的内存访问一次比较两个前缀k个字节,并且它允许消除许多慢速情况
(注意:S'是附加S了k个EOF字符的原件,k是适合机器字的字符数(我是32位机器,所以k=4)
EOF = '$'
Run Code Online (Sandbox Code Playgroud)
如我错了请纠正我:
S'= abracadabra$$$$
W= abra brac raca acad cada adab dabr abra bra$ ra$$ a$$$
Run Code Online (Sandbox Code Playgroud)
然后,算法说你必须S通过索引到数组W来对后缀数组(名为V)进行排序.
我不完全明白你如何通过索引来排序后缀W.例如:在分选的某一点,假设你得到两个后缀,i并且j,你必须对它们进行比较.由于您正在编入索引W,因此您当时要检查4个字符.
假设它们具有相同的前4个字符.然后,您必须检查每个后缀的下4个字符,并通过从每个后缀的第4个位置访问来完成W.这是正确的吗?这种"将字符包装成文字"真的能加快速度吗?
我发现自己对访问顺序和非访问修饰符感到困惑.例如
abstract void go()
abstract public void go()
public final void go()
void final go()
final class Test{}
class final Test{}
final abstract class Test{}
abstract final Test{}
Run Code Online (Sandbox Code Playgroud)
我永远不知道正确的顺序是什么,有时候我弄错了,因为有太多可能的组合.对于哪一个应该先于另一个有明确的指导?
是否有任何关于它们在代码中出现的格式和顺序的描述?我想提出一个语法指南,但我不确定它是否100%正确.这里是:
Methods:
[access modifier | nonaccess modifier] return-type method-name
Classes:
[access modifier | nonaccess modifier] class class-name
Interfaces:
[access modifier | nonaccess modifier] interface interface-name
Variables:
[access modifier | nonaccess modifier] variable-type variale-name
Run Code Online (Sandbox Code Playgroud) 我在接受采访时被问到这个问题,我无法回答这个问题.
更具体地说,赋值运算符所属的类如下所示:
class A {
private:
B* pb;
C* pc;
....
public:
....
}
Run Code Online (Sandbox Code Playgroud)
如何为此类实现原子(线程安全)和异常安全的深层复制赋值运算符?
我试图以684.5450072点精度打印数字,因为数字被截断(不是舍入)之后684.54.
我用的时候
var = 684.545007;
printf("%.2f\n",var);
Run Code Online (Sandbox Code Playgroud)
它输出684.55,但我想得到的是684.54.
有谁知道我怎么能纠正这个?