【初心者歓迎】C/C++室 Ver.101【環境依存OK】 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
エスケープシーケンスや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/ >>92
難しく考えなくてもそのまんまだよ
this->operator[](n);
もしくは単に
operator[](n); operator()();
俺はこの言語を勉強するのをやめた >>97
operator彡(゚)(゚)
こう使う int main() {
vector<int> v;
v.reserve(10000);
v.push_back(0);
cout << v.capacity() << endl;
vector<int> (v).swap(v);
cout << v.capacity() << endl;
}
(v).swap(v); の文頭のvに付いてる()は何の意味があるんでしょうか? >>101
vector<int> (v)
までで一時オブジェクトをコピーコンストラクトしてるんじゃ?
で、.swap(v) で中身を入れ替えて、コンパクションするっていうサンプルに見える。
未確認で書いてるので、間違えてたらごめん。 ・V ・
(v).swap(v) フォッフォッフォッ >>103
何とか理解できました。ありがとうございます。 vector<int> (v).swap(v);
>と( の間が離れてるのが、分かりにくい読みづらい、意地悪な点だな。 > vector<int> (v).swap(v);
C++は糞だな。 >>117
あると思ったから 無いの? なのに
どうして無いのか説明できないアフォなの? 今流行りのこれか
これからわざとこういうやり取りして荒らすやつ増えるんだろうな
http://www.honmotakeshi.com/archives/51758414.html
委員「あなたがやっていることの根拠を示してください」
前川「俺のやることに疑問を持つなら疑問を持つ根拠を示せ」
委員「政策を実現するにはそれに基づく根拠が欲しいと言ってるんです」
前川「それだけの疑問を呈するなら疑問の根拠を示せ」 >>119
最初からそう言えばいいのに。
そもそもシュリンクが必要になるのかがわからないって事でOK? >>121
最初から一貫した発言しかしてないけど
「最初からそう言えばいいのに」ってアフォなの? コミュニケーション出来てない
明らかに触ってはダメな人でしょ バイナリファイルについて質問します
変数xyzがあったときxyzをまとめてバイナリファイルにすることはできないんでしょうか?
例えば
#include<stdio.h>
FILE *fp;
int main(void) {
fp=fopen("test2.dat", "wb");
int x = 10;
double y = 15.55;
char z[] = { "abcde" };
fwrite(&x, sizeof(x),1, fp);
fclose(fp);
return 0;
}
これでxのバイナリファイルはできると思いますがyzにもそれぞれ専用のファイルポインタを用意して
それぞれ個別に書き出すことしかできないんでしょうか? fclose()する前に同じfpに続けてfwrite()すれば、同じファイルに書き出されますよ ありがとうございます。
いっぺんに書くんじゃなくて行を増やして書けばよかったんですね(´エ`) > char z[] = { "abcde" };
こんな初期化初めて見た
奥が深いな mapで、あるvalueを持つpairだけを別のmapに移す時はどうやればよいでしょうか?
例えば
unordered_map<int, int> map1{
{0, -10},
{10, -1},
{2, 5},
}
があってvalueが負のもの({0, -1.}と{10, -1})をmap1から削除して
map2へ移す、みたいな場合です。 C++14まではmapの要素を直接付け替えることはできないのでそのまま
1 ループやalgorithmで該当する要素を見つける
2 その要素のキーと値でmap2に新しい要素を追加
3 古い要素をmap1から削除
4 該当する要素がなくなるまで1-3を繰り返す >>131
std::remove_copy_if を使うのが一番簡単な方法だと思う。
std::remove_copy_if(std::begin(map1), std::begin(map2), std::inserter(map2, std::end(map2)), [](decltype(map2)::value_type x) { return x.second < 0; });
みたいな感じ。 C++のSTLってこういうの好きだけど
ベタに書いた方が絶対楽だよな・・ あとから見てこれなにやってるんだっけ?
ってなりそうで怖い >>134-135
こういう場合に for で回した方がいいというタイプの人は go に移行した方が幸せになれると思う。 あとエラるもんなら
とんでもない量の
コンパイルエラー吐くんだよな
もうアホかと >>132
ありがとうございます。
http://ideone.com/l4I4Kt
こういう感じでループ回しているときに削除するとうまく行かないので聞いてみました。
イテレータでもうまくいかなくて。
>>133
algorithm使うんですね。こういう書き方知らなかったです。 >>135
for文のほうがなにやってるかわからんわ
標準なら何やってるかわからなくてもググれば挙動がわかる
どっちにしても、わかりにくいものは構造化して名前をつけるべきだけどね >>139
イテレータを使うならこんな感じ
eraseの返却値をイテレータの更新に使う
http://ideone.com/PysLw5 >>140
分かりにくいか?
for(auto pair: map1){
if(pair.second < 0){
map2.insert(std::pair<int,int>(pair.first, pair.second);
}
}
for(auto pair: map2){
map1.erase(pair.first);
} >>143
うん
そんなコードがプルリクされたらreplace to stl functionとだけ書いて突き返すよ >>145
>for(auto pair: map2){ てかpairなんて変数名使うなよ
誰か頭おかしいやつがusing namespace stdしたらどうすんだよ てか細々とひどいね
こんな短いコードでよくもまぁ無能をここまで晒せるなと思う >>147
意味わからん
ひょっとしてコード読めてない? >>148
なんの問題もないけど?
って思ったらいちゃもんしかつけられない奴かよ w >>151
make_pair知らないの?
なんでコピーコンストラクタ使わないの?
てかemplace知らないの?
ifのステートメントの中がひどい プログラム板ってみんなこんな感じなの?
とりあえずバカにする
みたいな >>146
なぜ?その理由は?
書くならそこまで書けよ無能 >>157
わけわかんないオレオレコードより、テスト済みの標準ライブラリ関数のほうが信頼できるから 安易にライブラリを使うから、パフォーマンスがどんどん悪くなるんだな >>155
自分の知識目一杯使って的はずれなマウンティングしてる奴がいるだけ w あと、自分がコメントできそうな話題になるとここぞとばかりに知識を披露しようとして、
主題からずれたことを言い出したり、
さらにそれに間違いがあって余計なツッコミや攻撃的コメントを呼び込むのも
よく見る風景。 さほど広い範囲を読んでるわけじゃないけど、
C++関連は特に殺伐としてる感じはあるな。 >>159
まずは意図が伝わるようにと言う意味でシンプルに書くことが重要。
標準ライブラリ使用は最低限のマナー。
チーム開発してると、上記を踏まえずオレオレ判断でパフォーマンスガー言っている人が、一番迷惑なんだよね。 仕事だとメモリ効率や実効速度より開発効率が優先されるからな パフォーマンスどうこうで、標準ライブラリ使わなくても許されるのは、mkl開発チームとか、eigenのコミッターレベル >>164
>まずは意図が伝わるように
ならお前、>>133が何してるか説明出来るんだよな? >>167
それが元ネタかー!
すみませんでした _orz
無理っていうか、>>143でおk派ですw >>169
答えられないから回答を逸らすんですねわかります
まさか「あるvalueを持つpairだけを別のmapに移す」なんて言わないことを祈る ん?
でも、よく見たら>>133割りとわかりやすいじゃん?
今、スマホの小さい画面で改行が多いから面食らったけど、2行(かな?)でみれば、とてもシンプルで意図も読み取れるわ。 ちょっとテンパったけど、そのレベルなら正直どっちでも構わないな。
コメントがあれば。 >>144
どう見ても>>133の方が酷いお題改変なのだが
それをさしおいて>>143に指摘とはこれ如何に >>165
どうでも良いことにこだわってるあたり、
開発スピードが速いようには見えないなあ >>127
亀だがバイナリ書き込みは後で読み込むときに構造情報が欠けてることが多いからできれば避けたほうがいい
abcde が可変長になりそうなところとかな 個人的には BENCODE がなかなかいいんじゃないかと思ってる。 >>177
>バイナリ書き込みは後で読み込むときに構造情報が欠けてることが多い
欠けているのは>>177の知能だろ enum EMFType
{
MF_INT, // 符号付き整数
};
// いろいろなデータを1つの関数で表示します
void MultiFunc(EMFType type, unsigned int data)
{
switch(type)
{
case MF_INT : cout << (int)data << endl; break;
}
}
int main()
{
int a = -10;
MultiFunc(MF_INT , a);
return 0;
}
実行結果
-10
unsigned int にマイナスの値を渡してるんですが、そのまま出力されます。
これが仕様だとすると、パラメーターにunsigned int を指定する意味はなんなんでしょうか? >>181
なんでcoutでintにキャストしてんの >>180
MultiFuncを作った人にきけば? >>181
ありがとうございます。コンバイラかバージョンの問題ですかね。
>>182
http://www7b.biglobe.ne.jp/~robe/cpphtml/index.html
ここで勉強してたら出てきたんですが、完全には書いてること理解できてないんで何でかはわかりません。 >>180
cout時にintにcastしているからでは? >>185
よく見てくれ,cout << (int)x
の (int) のキャストが問題となっている,なぜ (int) のキャストをしているのかは読み取れないが >なぜ (int) のキャストをしているのかは読み取れないが
ふむふむ、これがイケヌマと言う奴だな これが読み取れない者はC/C++より国語の勉強をした方がよいのではないか 業務ではよくあるよ。
バグか仕様か分らないっての。書いた本人は既にいなくて誰も答えを知らない。 型消し、type eraserだから、データ構造に意味が無ければ、悪い設計だろう。 >>190
で、なぜキャストしてるの?
読み取れた結果を披露してちょ ■ このスレッドは過去ログ倉庫に格納されています