トップ «前の日記(23-November-2020) 最新 次の日記(25-November-2020)» 編集

つれづれなるままに

これまでの訪問者人
本日の訪問者人  昨日の訪問者人
月齢20.6

AI | AIきりたん | Ast | Beat Saber | CeVIO | Cn | cover | de | Emacs | En | Es | fr | git | html | iPad | It | Just Dance | misc | MMD | MV | NEUTRINO | OVA | PC | PV | Ru | SF | SKK | stable diffusion | SynthesizerV | tDiary | Th | Vocaloid | VRC | VRChat MMD | Vsinger | Vtuber | was | YuNi | お茶 | アニメ | アメリカ | イラスト | オカリナ | カゲプロ | キズナアイ | テレビ | ノベル | ノーベル賞 | ビートセイバー | フィートセイバー | フランス | ラズパイ | ラノベ | 万葉語 | 世界 | 中国 | 予定 | 即売会 | 台湾 | 台風 | 合成してみた | 同人 | 地震 | 宇宙 | 家電 | 展示 | 描いてみた | 政治 | 旅行 | 日記 | 映画 | 時事 | 書道 | 歌ってみた | 歴史 | 海外 | 演奏してみた | 漫画 | 特撮 | 科学 | 英国 | 訃報 | 語学 | 踊ってみた | 陶笛 | 障害 | 音楽 | 飲み |

24-November-2020 書くことがない [長年日記]

_ [アニメ] 魔女の旅々

人形の国。

いや、髪を切られてしまうイレイナもかなりうかつですが……。

かなり濃いキャラのシーラですが、サヤの師匠だったのね。

今回は人形が気持ち悪い回かと思ったら、それを作ってる人がものすごく気持ち悪いのでした。

_ [Vtuber][Vsinger][cover] 【歌ってみた】キルマー covered by 春猿火

神椿の春猿火のカヴァー。

最初のころはラップ調の曲がメインだったのですが、最近は違う感じの曲もうたうようになってきましたね。

_ [Vtuber][Vsinger] 花譜 #69「まほう feat.理芽」【オリジナルMV「不可解弐Q1」Live Ver.】

不可解のときのライブ映像みたいで。

いや、やっぱり花譜と理芽の声の違いがわかりにくい。

同時に歌ってるからもっと差がついててもおかしくないのに。最初の方はどっちが歌ってるかわからなかった。

あえて言うなら、花譜の方が声がひしゃげてて、理芽の方がやや素直な声になってる。

神椿の花譜と理芽でした。

_ [PC] まぁ、今更のことなんでしょうが C++ のベクター

perlの方がC++よりも親しんできたので最近おぼえはじめた C++ が不便でたまらないところがありました。

そのうちのひとつが配列のサイズ。

まぁ、Fortranでもそうですが、古典的には必要とされるより大きい数の配列を宣言しておいて、その一部を使うというものなのですが、この数が不明のときには不便で。

これまたよく使う連結リストはメモリの配置がばらばらになりやすく遅くなりがちとのこと。

でもリストの後ろにがんがん追加していけるのは便利。perl なら配列の最後にpushで要素を追加することができますからね。

というわけでC++の標準ライブラリにある連結リストの std::list を調べていたのですが、何のことはない、std::vector を使えば比較的高速に動かすことができるようで。(メモリは配列よりも食うらしいですが。)

listの場合は途中で切った貼ったができるのですが、なにかのデータを読み込んでいって後ろに要素を足していくだけならvectorで充分じゃん。

ということで使い方の練習ということで。

#include <cstdint>
#include <cstdio>
#include <vector>

int main(void) {
 std::vector<int32_t> datas;
 for (int32_t i = 0; i < 10; i++) {
   datas.push_back(i);
 }
 printf("number of elements: %d\n", datas.size());
 printf("first element:%d\n", datas.front());
 printf("last element: %d\n", datas.back());
 printf("two type of loop\n");
 for (int32_t i = 0; i < datas.size(); i++) {
   printf(" %d", datas[i]);
 }
 printf("\n");
 for (int32_t x : datas) {
   printf(" %d", x);
 }
}

こいつを g++ なり clang++ でコンパイルして実行。

number of elements: 10
first element:0
last element: 9
two type of loop
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9

いや、本当、今更なんでしょうね。

最初のforのところをファイルからEOFまでループさせておけば、ファイルのレコード数分データがvectorにたくわえられるわけで。

例では int32_t のベクターにしたけど、構造体 T に対して std::vector<T> datas; とでもしておけば構造体のベクターができて、ループで構造体を取り出すことができる、と。

size を使ったり、そもそも for(int32_t x:datas)みたいなループを使えば要素の数を気にせずにループしてデータを取ってくることができる、と。

あえてstreamを使わないで printf を使ってるので、C++っぽくないのですが……。。


【PR】ブログへ記事を投稿して報酬ゲット!アフィリエイトのA8.net