【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2016/11/06(日) 22:58:02.60ID:dU5z27As
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。

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

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

前スレ
【初心者歓迎】C/C++室 Ver.99【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1469177649/
2016/11/06(日) 23:23:55.86ID:AHO3vAwR
>>3-1000は射精魔
3デフォルトの名無しさん
垢版 |
2016/11/07(月) 00:30:57.27ID:pyn9XiBr
>>2
訂正しときます
次スレの>>3-1000が射精魔
2016/11/07(月) 09:27:53.95ID:vooGYje+
前スレ>>999再掲
class A{
int a[2];
A(int b[])
:a(b) //error
{}
};

この:a(b)ってなにか書き方ありますか?

前スレ>>1000
無理でした・・・
2016/11/07(月) 09:34:35.19ID:dSd+kVnH
何がしたいのかわからないので回答しようがないな
2016/11/07(月) 09:36:19.79ID:dSd+kVnH
あ、初期化子か
インデントがないから見間違えた
2016/11/07(月) 09:38:54.66ID:e8hpdnod
引数の int b[] って int* b と同じやしなぁ
2016/11/07(月) 09:47:42.61ID:HQzTq5fm
std::array
2016/11/07(月) 12:11:29.58ID:56hqYy7l
C++11以降なら
A(int (&b)[2]) : a{b[0], b[1]} {}
2016/11/07(月) 14:52:37.34ID:fwwW9lIx
だがint b[2][3]はポインタ引数は・・・
2016/11/07(月) 14:56:04.42ID:6MsAvbZq
↑幻覚をみた糖質のつぶやき
12デフォルトの名無しさん
垢版 |
2016/11/07(月) 15:00:49.14ID:3Xim9e5h
>>4
C++11以降ならstd::initializer_listが使える

#include <iostream>
#include <initializer_list>
#include <algorithm>

class A {
int a[6];
public:
A(std::initializer_list<int> b) {
std::copy(std::begin(b), std::end(b), a);
}
void print() const {
for (int i : a)
std::cout << i << std::endl;
}
};

int main()
{
A a({10, 4, 2, 8, 5, 66});

a.print();
}
2016/11/07(月) 18:18:06.75ID:hOJqMng1
>>12
それinitializer_listに6っこ以上与えたら実行時のアクセス違反になる

>>4
C++11以降ならstd::array使うべき
そうすれば普通に書ける

class A{
std::array<int,2> a;
public:
A(const std::array<int,2> &b):a(b)
{
}
};
1413
垢版 |
2016/11/07(月) 18:21:04.82ID:hOJqMng1
2行目「6個より多く」だったね
2016/11/07(月) 18:44:55.40ID:3Xim9e5h
>>13
いやいくらでも動的に増やせるんだけど初心者スレだから省略した

http://ideone.com/ryEwkt
2016/11/07(月) 19:07:23.45ID:hOJqMng1
要求は固定長の配列であって、動的に増やせるようにしろとは言ってないので
それのコードは非効率にしかならないと思うよ
2016/11/07(月) 19:25:01.70ID:fwwW9lIx
>>11
ん?
int b[2][3];をわたせんの?
func(int a[][3]);以外で
2016/11/07(月) 19:50:01.21ID:Z2RT26Su
>>16
だからvector使ってないでしょう
unique_ptrのパフォーマンス知らないの?
2016/11/07(月) 20:07:47.59ID:Z2RT26Su
ID:hOJqMng1 の主張の変遷

1.わざと大きい初期化子を与えると実行時にアクセス違反になると主張
→だから動的に対応できるようにした

2.すると今度は非効率的だからarrayを使えという
→arrayが特に効率的なわけではないし、今度は「要求は固定長の配列だ」と言い出す

どう考えても言ってることがコロコロ変わってるんだが
20デフォルトの名無しさん
垢版 |
2016/11/07(月) 21:12:34.93ID:L762Pvtq
!!喧嘩の予感!!
2016/11/07(月) 21:25:52.93ID:nZ1H9hgf
A() : a{b[0], b[1]} {}がダメだった人にC++11を押しつけてどーすんだ
>>12に至ってはもとの質問と全然関係ねーし
2016/11/07(月) 21:26:20.26ID:Rr8tj+hR
VC++で、マウスオーバーで色が少し変わって、クリックしたら沈んだみたいになる画像ボタンを作るにはどうしたらいいですか?
2016/11/07(月) 22:16:57.66ID:hOJqMng1
>>19
まず効率は動的確保を行うnewとunique_ptrより確実にarrayのほうがいい

そして>>4の要求はコードから明らかに固定長でいいと言ってる
これは私の勝手な主張ではなく元の要求がそうなってる
目的を達成するために非効率な動的確保は必要ない

私はアクセス違反になるといったが動的確保にしろとは言っておらず、動的確保にしたのはそっちが勝手にやったこと
アクセス違反を回避するために動的確保にするのは全く割に合わない
だったら長さチェックすればいいだけ
2016/11/07(月) 22:20:22.76ID:JXtVbtZ4
>>21で結論でてるじゃねえか
C+11を押し付けてる時点でおまえら全員ダメだ!
2016/11/07(月) 23:34:44.46ID:lMECrzfj
いいぞ、もっとやれ〜♪
2016/11/08(火) 00:32:16.33ID:t0HdCoBm
沸点低すぎワロタw
2016/11/08(火) 00:33:05.07ID:2SYrs2Uf
>アクセス違反を回避するために動的確保にするのは全く割に合わない
こう書かれるべきものが
>>16
>それのコードは非効率にしかならないと思うよ
と書かれたため>>19が射精した

特に「非効率にしかならない」の「にしか」という表現が前後の繋がりを考えると最悪だ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。