X



【初心者歓迎】C/C++室 Ver.101【環境依存OK】 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
垢版 |
2017/07/18(火) 07:07:27.20ID:vzMDiUgd
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。

◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。

【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)

前スレ
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
http://mevius.2ch.net/test/read.cgi/tech/1478440682/
0988デフォルトの名無しさん
垢版 |
2017/11/03(金) 20:59:39.93ID:t+2N1bPb
坊主頭なんだが、ストレスで10円ハゲがたくさんできてQRコードだ。安心しろ。
0989デフォルトの名無しさん
垢版 |
2017/11/04(土) 09:57:38.12ID:io7R91TU
char a[8]="12 34 56";
と言うのがあったとして
これを数値の123456にしたい時、一番速い書き方ってどんなだろうか
0991デフォルトの名無しさん
垢版 |
2017/11/04(土) 10:58:19.72ID:OnkwfBEU
普通に文字列の先頭から、数字が表れたら'0'との差を加算して桁上げして、ってのを繰り返すのが速いと思うが。
0992デフォルトの名無しさん
垢版 |
2017/11/04(土) 11:09:08.10ID:XesRBOxx
>>989 スレッド終盤に面白い問題を出してくれるなぁ。

a[8] と要素数を明示して "12 34 56" を代入する部分に罠の臭いを感じる。
'\0' 終端の一般的なCの文字列ではない、8byte専用のトリックが存在するのかも。
0993はちみつ餃子 ◆8X2XSCHEME
垢版 |
2017/11/04(土) 11:29:59.70ID:oNhsu9lL
条件次第ではあるけど、
平均的には標準で用意されている関数を使うのがまともな速さになると思う。
↓こんなの

*std::remove(std::begin(a), std::end(a), ' ') = '\0';
0997デフォルトの名無しさん
垢版 |
2017/11/04(土) 12:28:06.26ID:io7R91TU
みんなありがとう
>>991を参考にこんな感じでやってみたけど、どうなんだろうか。
#include <stdio.h>
#include<time.h>
int main(){
char a[8]="12 34 56";
int b;
clock_t c c;
c=clock();
for(int d=1000000000;d;d--){
b=10*(10*(10*(10*(10*(a[0])+a[1])+a[3])+a[4])+a[6])+a[7]-5333328;
}
printf("%d\n%.3f\n",b,(double)(clock()-c)/CLOCKS_PER_SEC);
}
スマホで書いたからミスってるかもw
1000はちみつ餃子 ◆8X2XSCHEME
垢版 |
2017/11/04(土) 20:57:59.73ID:oNhsu9lL
結果を整数で得たいならこういうのでもいいかな。

std::accumulate(std::begin(a), std::end(a), 0, [](int acc, int e) { return std::isdigit(e) ? acc*10+e-'0' : acc;})
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 109日 13時間 50分 32秒
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況