エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります
コードを貼れる所
http://codepad.org/
https://ideone.com/
前スレ
【初心者歓迎】C/C++室 Ver.104【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1545944692/
探検
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
2019/04/25(木) 06:54:38.08ID:6xUIrXDu
493デフォルトの名無しさん
2020/01/13(月) 13:00:00.75ID:A/MByXKy template<template<typename X> L>
はtemplate<template<typename> L>と同じでXはなんの意味も持たない
はtemplate<template<typename> L>と同じでXはなんの意味も持たない
494デフォルトの名無しさん
2020/01/13(月) 13:11:53.50ID:A/MByXKy classが抜けてた
495デフォルトの名無しさん
2020/01/13(月) 13:33:15.28ID:Tr5rZ1p8 >Xが型ならtypename Xを<>の中に付け足すべし
Func(const L<teypename X> & l, const R<teypename X> & r)
ってこと???
テンプレート引数の X の型を返すのはどうすればいいんですかね?
Func(const L<teypename X> & l, const R<teypename X> & r)
ってこと???
テンプレート引数の X の型を返すのはどうすればいいんですかね?
496デフォルトの名無しさん
2020/01/13(月) 13:38:01.62ID:A/MByXKy template<typename X,
template<typename> class L,
template<typename> class R>
X Func(const L<X>& l,const R<X>& r)
template<typename> class L,
template<typename> class R>
X Func(const L<X>& l,const R<X>& r)
497デフォルトの名無しさん
2020/01/13(月) 13:44:12.54ID:Tr5rZ1p8 >>492
>Xが型ならtypename Xを<>の中に付け足すべし
Func(const L<double> & l, const R<double> & r)
と具体的にXを書く必要があるってことでしょーか?
>Xが型ならtypename Xを<>の中に付け足すべし
Func(const L<double> & l, const R<double> & r)
と具体的にXを書く必要があるってことでしょーか?
498デフォルトの名無しさん
2020/01/13(月) 14:14:22.42ID:Tr5rZ1p8499デフォルトの名無しさん
2020/01/13(月) 14:26:44.12ID:Tr5rZ1p8 Funcが2項演算
X operator+ (const L<X> &l, const L<X> &r)
だと
template < typename X,
template<typename> typename L,
template<typename> typename R>
は,clangで
invalid operands to binary expressionになりますね。
X operator+ (const L<X> &l, const L<X> &r)
だと
template < typename X,
template<typename> typename L,
template<typename> typename R>
は,clangで
invalid operands to binary expressionになりますね。
500デフォルトの名無しさん
2020/01/13(月) 15:21:33.84ID:Tr5rZ1p8 https://faithandbrave.hateblo.jp/entry/20081003/1223026720
ここにある
floatを例えばdoubleとかintとか汎用性を持たせたい
Vector<double> x;
Vector<double> y;
Vector<double> z;
Vector<double> t;
で
t= x+y+z;
という計算ができるようにしたい。
このとき
template <typename T>
class Vector{
ここに式テンプレート一切合切をメンバに持たせる
};
と定義して、式テンプレートの一切合切をVectorクラスのメンバとしてしまえば、うまくいくことがわかりましたが、
式テンプレートを独立させると、2項演算の型情報"float" をどう渡せばいいのか困っています。
2項演算の一番最初に呼ばれる
template <class L, class R>
Expression<L, Plus, R> operator+(const L& lhs, const R& rhs)
ここにfloatやdoubleの型情報を埋め込むにはどうすればいいのか?
ってことになると思うんですが。
ここにある
floatを例えばdoubleとかintとか汎用性を持たせたい
Vector<double> x;
Vector<double> y;
Vector<double> z;
Vector<double> t;
で
t= x+y+z;
という計算ができるようにしたい。
このとき
template <typename T>
class Vector{
ここに式テンプレート一切合切をメンバに持たせる
};
と定義して、式テンプレートの一切合切をVectorクラスのメンバとしてしまえば、うまくいくことがわかりましたが、
式テンプレートを独立させると、2項演算の型情報"float" をどう渡せばいいのか困っています。
2項演算の一番最初に呼ばれる
template <class L, class R>
Expression<L, Plus, R> operator+(const L& lhs, const R& rhs)
ここにfloatやdoubleの型情報を埋め込むにはどうすればいいのか?
ってことになると思うんですが。
501デフォルトの名無しさん
2020/01/14(火) 12:00:41.65ID:AM8t1N0H C++に108ある苦行の一つ、テンプレートの明示的特殊化
502デフォルトの名無しさん
2020/01/14(火) 12:10:40.04ID:AAWN8rY8 108で済むのか?
503デフォルトの名無しさん
2020/01/14(火) 12:53:30.61ID:KjTpusiu Vector内にtype持たせるなりget_type構造体作って特殊化で取るなりして合わないものをenable_ifで弾くなり
operator +の特殊化を書くなりいくらでもやり方はある
operator +の特殊化を書くなりいくらでもやり方はある
504デフォルトの名無しさん
2020/01/14(火) 13:00:30.38ID:Sh3SY+TQ 簡単に描けないと意味が無い
505デフォルトの名無しさん
2020/01/14(火) 13:05:03.28ID:KjTpusiu ETがそんな簡単に書けるわけねーだろ
506デフォルトの名無しさん
2020/01/14(火) 17:54:11.46ID:3su9tm6y >>500
そのサイトをちょっと読んでみたんだけど、LとRがすでにfloatやdoubleの型情報を持っているように思うのですが。
そのサイトをちょっと読んでみたんだけど、LとRがすでにfloatやdoubleの型情報を持っているように思うのですが。
507デフォルトの名無しさん
2020/01/14(火) 18:39:49.77ID:3su9tm6y508デフォルトの名無しさん
2020/01/15(水) 09:17:00.06ID:kgDFfipS >>506
完成形はサイトの一番最後にある
Expression , Plus , operator+
で、operator+ -> Expression -> Plusの順で呼ばれる、
operator+ に演算型(floatやdouble)がないので、ExpressionとPlusのfloatが自動的に選択されてしまう。
一番はじめのoperator+にデータ型を識別する仕組みを入れてそれを引き継いでいくか、
ExpressionとPlus内部でデータ型を認識することが必要だと思うんだけど?
2項演算でなければ3つの型を並べれば済むのにと思ってました。
>>507
using valu_type か
めっちゃ参考になります。
てかこれでほぼ解決です。
聞いて良かった。ありがとうございました
完成形はサイトの一番最後にある
Expression , Plus , operator+
で、operator+ -> Expression -> Plusの順で呼ばれる、
operator+ に演算型(floatやdouble)がないので、ExpressionとPlusのfloatが自動的に選択されてしまう。
一番はじめのoperator+にデータ型を識別する仕組みを入れてそれを引き継いでいくか、
ExpressionとPlus内部でデータ型を認識することが必要だと思うんだけど?
2項演算でなければ3つの型を並べれば済むのにと思ってました。
>>507
using valu_type か
めっちゃ参考になります。
てかこれでほぼ解決です。
聞いて良かった。ありがとうございました
509デフォルトの名無しさん
2020/01/15(水) 15:44:09.21ID:0mJheqXR なんでこの子そんなに上からなんだろ。
510デフォルトの名無しさん
2020/01/15(水) 22:41:08.06ID:kgDFfipS どこが上から?
511デフォルトの名無しさん
2020/01/15(水) 22:55:31.27ID:CBF4WmsT ちょっと賢そうだから嫉妬してる感
512デフォルトの名無しさん
2020/01/15(水) 23:10:31.17ID:kgDFfipS 見下して質問やレスした箇所がどこかわからん。
513503
2020/01/16(木) 10:42:26.08ID:CVktcrTk514430
2020/01/16(木) 11:28:05.62ID:0X0XQobn もしかすると文字でのコミュニケーションが下手なだけかも。直接対話しているならイントネーションやニュアンスで伝わるものが文字では伝わらない、誤解され得る、ということが分かってないとか。
「〜思うのですが。」ではなく「〜思うのですが、どうでしょうか?」と書けば言い返しているのではなく疑問点を質問していると明確になるのにね。
「〜思うのですが。」ではなく「〜思うのですが、どうでしょうか?」と書けば言い返しているのではなく疑問点を質問していると明確になるのにね。
515デフォルトの名無しさん
2020/01/16(木) 11:29:06.76ID:0X0XQobn >>514の名前欄は間違いなので無視してください
516デフォルトの名無しさん
2020/01/16(木) 11:36:45.85ID:N6AzyVRW int main() {
while(1) {
if (kbhit()) return -1;
}
}
while(1) {
if (kbhit()) return -1;
}
}
517デフォルトの名無しさん
2020/01/16(木) 13:18:13.07ID:lpjDYSs5 環境はMac Mojave10.14.6、VScodeは1.14.1
clang,gccはApple LLVM version 10.0.1 (clang-1001.0.46.4)です。
他VScodeの設定で"clang.cxxflags": [
"-std=c++17"
]
としています。
VScodeを使っていて、/Users/[USERNAME]/PATH/にある
c.cppというファイルを右上の矢印でコンパイルしてたら急に
cd "/Users/[USERNAME]/[PATH]/" && runFiles=`ls *.cpp` &&
g++ -std=c++17 `echo ${runFiles}` -o c && "/Users/[USERNAME]/[PATH]/"c
duplicate symbol _main in:
/var/folders/fy/0rw1xdjd3csf2v8nzp2wb4vc0000gn/T/c-216688.o
/var/folders/fy/0rw1xdjd3csf2v8nzp2wb4vc0000gn/T/d-c0a03b.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
というエラーが出てきました。
対応するにもこの/var/folders/fy/以下にあるファイル群がなんなのか分かりません、
どうすれば良いのでしょうか。
clang,gccはApple LLVM version 10.0.1 (clang-1001.0.46.4)です。
他VScodeの設定で"clang.cxxflags": [
"-std=c++17"
]
としています。
VScodeを使っていて、/Users/[USERNAME]/PATH/にある
c.cppというファイルを右上の矢印でコンパイルしてたら急に
cd "/Users/[USERNAME]/[PATH]/" && runFiles=`ls *.cpp` &&
g++ -std=c++17 `echo ${runFiles}` -o c && "/Users/[USERNAME]/[PATH]/"c
duplicate symbol _main in:
/var/folders/fy/0rw1xdjd3csf2v8nzp2wb4vc0000gn/T/c-216688.o
/var/folders/fy/0rw1xdjd3csf2v8nzp2wb4vc0000gn/T/d-c0a03b.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
というエラーが出てきました。
対応するにもこの/var/folders/fy/以下にあるファイル群がなんなのか分かりません、
どうすれば良いのでしょうか。
518蟻人間 ◆T6xkBnTXz7B0
2020/01/16(木) 13:27:47.37ID:xhLhfq9D519デフォルトの名無しさん
2020/01/16(木) 14:34:35.42ID:vo+Ub67N520デフォルトの名無しさん
2020/01/16(木) 14:39:29.98ID:vo+Ub67N521デフォルトの名無しさん
2020/01/16(木) 14:50:56.26ID:sHruIOmX 乞田川
乞田型
乞田首
乞田型
乞田首
522513
2020/01/16(木) 16:00:48.56ID:CVktcrTk523デフォルトの名無しさん
2020/01/16(木) 16:06:03.64ID:CVktcrTk524デフォルトの名無しさん
2020/01/16(木) 16:21:00.89ID:vo+Ub67N >>522
やっぱりな
auto一発ですむ話に
>>503
>Vector内にtype持たせるなりget_type構造体作って特殊化で取るなりして合わないものをenable_ifで弾くなり
>operator +の特殊化を書くなりいくらでもやり方はある
こういう寝言ほざいてたんだな。
質問者は
>>500
>Vector<double> x;
>Vector<double> y;
>Vector<double> z;
>Vector<double> t;
>t= x+y+z;
>という計算ができるようにしたい。
>式テンプレートの一切合切をVectorクラスのメンバとしてしまえば、うまくいくことがわかりましたが、
>式テンプレートを独立させると、2項演算の型情報"float" をどう渡せばいいのか困っています。
やっぱりな
auto一発ですむ話に
>>503
>Vector内にtype持たせるなりget_type構造体作って特殊化で取るなりして合わないものをenable_ifで弾くなり
>operator +の特殊化を書くなりいくらでもやり方はある
こういう寝言ほざいてたんだな。
質問者は
>>500
>Vector<double> x;
>Vector<double> y;
>Vector<double> z;
>Vector<double> t;
>t= x+y+z;
>という計算ができるようにしたい。
>式テンプレートの一切合切をVectorクラスのメンバとしてしまえば、うまくいくことがわかりましたが、
>式テンプレートを独立させると、2項演算の型情報"float" をどう渡せばいいのか困っています。
525デフォルトの名無しさん
2020/01/16(木) 16:21:26.81ID:vo+Ub67N >>522
つづき
内部に
type持たせるも何も
auto
operator[](std::size_t i) const{
return Op::Apply(l_[i], r_[i]);
}
として、
struct Plus{
struct Plus
{
template <typename T>
とするだけで、
質問者のやりたいことはいくらでも出来ますがなにか。
お前自身低レベルの極みなんだよ馬鹿たれ
つづき
内部に
type持たせるも何も
auto
operator[](std::size_t i) const{
return Op::Apply(l_[i], r_[i]);
}
として、
struct Plus{
struct Plus
{
template <typename T>
とするだけで、
質問者のやりたいことはいくらでも出来ますがなにか。
お前自身低レベルの極みなんだよ馬鹿たれ
526デフォルトの名無しさん
2020/01/16(木) 16:23:29.03ID:vo+Ub67N527デフォルトの名無しさん
2020/01/16(木) 16:27:23.02ID:CVktcrTk 質問者は型情報を渡したいと言ってるだろうが
お前のやり方だと要素ごとのbitwise orとか実装するときに困るんだよアホ(多分他にも困る場面あるはず
整数だろうが浮動少数点数だろうが表記が同じ演算ならお前の言うそれでいいけどな
お前のやり方だと要素ごとのbitwise orとか実装するときに困るんだよアホ(多分他にも困る場面あるはず
整数だろうが浮動少数点数だろうが表記が同じ演算ならお前の言うそれでいいけどな
528デフォルトの名無しさん
2020/01/16(木) 16:28:28.38ID:CVktcrTk あと
>オマエ何様のつもりだ。
>匿名掲示板でいったいどんな言葉使いを期待してるんだアホww
そっくりそのまま返すわキチガイが
>オマエ何様のつもりだ。
>匿名掲示板でいったいどんな言葉使いを期待してるんだアホww
そっくりそのまま返すわキチガイが
529デフォルトの名無しさん
2020/01/16(木) 16:33:49.27ID:vo+Ub67N530デフォルトの名無しさん
2020/01/16(木) 16:39:34.67ID:CVktcrTk >Op::Apply(l_[i], r_[i]); の型がvalu_typeの型そのものってことがわかってない
お前の言ってるそれは>>506そのもの
そういや俺operator +の特殊化とか書いてたけど
Applyの方だな
あとオーバーロードが抜けてた
お前の言ってるそれは>>506そのもの
そういや俺operator +の特殊化とか書いてたけど
Applyの方だな
あとオーバーロードが抜けてた
531デフォルトの名無しさん
2020/01/16(木) 16:40:27.48ID:vo+Ub67N532デフォルトの名無しさん
2020/01/16(木) 16:42:45.67ID:vo+Ub67N >>530
はぁ?
Op::Apply(l_[i], r_[i]); が型情報もってるのにわざわざクラス内部に不要なtype実装させてどーするつもりだと言ってるんだよ低脳
日本語わからんのかアホ
お前は日本語の勉強からやり直せ
はぁ?
Op::Apply(l_[i], r_[i]); が型情報もってるのにわざわざクラス内部に不要なtype実装させてどーするつもりだと言ってるんだよ低脳
日本語わからんのかアホ
お前は日本語の勉強からやり直せ
533デフォルトの名無しさん
2020/01/16(木) 16:44:58.53ID:vo+Ub67N アホさらしあげ
>>522
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
変わるんだようすらバカ
autoにするだけで質問者の解決だ。ばかたれ
>>522
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
>autoにしても何も変わらねーんだよ
変わるんだようすらバカ
autoにするだけで質問者の解決だ。ばかたれ
534デフォルトの名無しさん
2020/01/16(木) 16:47:00.45ID:CVktcrTk まじめんどくせぇこいつ
俺はtypeだのvalue_typeだの余計な要件増やすことを良い実装だとは思ってないぞ
>>506を挙げてそれに言い返してるのを批判的に言ったのはそれが理由
お前がドヤ顔でautoとか言い出す前からな
俺はtypeだのvalue_typeだの余計な要件増やすことを良い実装だとは思ってないぞ
>>506を挙げてそれに言い返してるのを批判的に言ったのはそれが理由
お前がドヤ顔でautoとか言い出す前からな
535デフォルトの名無しさん
2020/01/16(木) 16:52:26.75ID:CVktcrTk536デフォルトの名無しさん
2020/01/16(木) 17:42:18.71ID:ZhNhElM8 で、ID:vo+Ub67N は逃げたの?
いつものイチャモンつけるしか能が無いクズだろうけど
そんな暇があったら最初からちゃんと答えてやれよゴミが
いつものイチャモンつけるしか能が無いクズだろうけど
そんな暇があったら最初からちゃんと答えてやれよゴミが
537デフォルトの名無しさん
2020/01/16(木) 19:09:23.03ID:goTqdxUb 外野が喚いて質問者が迷惑するパターン?
538デフォルトの名無しさん
2020/01/16(木) 19:24:24.34ID:J+/qaxiI >>518
ご返信ありがとうございます、とりあえず言われたことに関係ありそうなことを
調べたのですが、自分のファイルにそういった感じの文法ミスがあるのかは
分かりませんでした。一応短いのでエラー吐いたソースコード貼っておきます。
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
int N;
cin >> N;
int a[N];
for (int i = 0; i < N; i++) cin >> a[i];
long long ans = 0;
for (int i = 1; i <= 3000; i++) {
long long sum = 0;
for (int j = 0; j < N; j++) sum += a[j] % i;
ans = max(ans, sum);
}
cout << ans << endl;
return 0;
}
後、以前コンパイルできていたプログラムで同様の手順を試しにやってみたら、
同様の症状が起こって実行ファイルが消えました。
>>523
申し訳ありません、無知だったので色々調べたのですがエントリポイントという物が
よく分かりませんでした。気がつかないうちに何かまずいところ弄って他のプログラムと
開始アドレスが被ったとかそんな感じでしょうか?
ご返信ありがとうございます、とりあえず言われたことに関係ありそうなことを
調べたのですが、自分のファイルにそういった感じの文法ミスがあるのかは
分かりませんでした。一応短いのでエラー吐いたソースコード貼っておきます。
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
int N;
cin >> N;
int a[N];
for (int i = 0; i < N; i++) cin >> a[i];
long long ans = 0;
for (int i = 1; i <= 3000; i++) {
long long sum = 0;
for (int j = 0; j < N; j++) sum += a[j] % i;
ans = max(ans, sum);
}
cout << ans << endl;
return 0;
}
後、以前コンパイルできていたプログラムで同様の手順を試しにやってみたら、
同様の症状が起こって実行ファイルが消えました。
>>523
申し訳ありません、無知だったので色々調べたのですがエントリポイントという物が
よく分かりませんでした。気がつかないうちに何かまずいところ弄って他のプログラムと
開始アドレスが被ったとかそんな感じでしょうか?
539蟻人間 ◆T6xkBnTXz7B0
2020/01/16(木) 19:36:20.45ID:AwrKlCOf *.cppにより、エントリポイントのmain関数を2つコンパイルしたんではないか?
540蟻人間 ◆T6xkBnTXz7B0
2020/01/16(木) 19:38:26.02ID:AwrKlCOf 1つのフォルダには1つのプロジェクトにした方がいいのかも。
541デフォルトの名無しさん
2020/01/16(木) 19:38:35.95ID:ZhNhElM8 >>538
エントリポイントっていうのはそこでいうmain関数のことね
それが複数作られてるとエラーになる
そのソースコードをヘッダファイルに書いててそれを複数のファイルでインクルードしてるとか
あるいは他にもmain関数を定義してる余計なソースコードがあるとかそういうのが原因だとおも
エントリポイントっていうのはそこでいうmain関数のことね
それが複数作られてるとエラーになる
そのソースコードをヘッダファイルに書いててそれを複数のファイルでインクルードしてるとか
あるいは他にもmain関数を定義してる余計なソースコードがあるとかそういうのが原因だとおも
542デフォルトの名無しさん
2020/01/16(木) 19:40:09.05ID:ZhNhElM8 リロードしてなくて被った
543デフォルトの名無しさん
2020/01/16(木) 20:19:17.16ID:J+/qaxiI544デフォルトの名無しさん
2020/01/16(木) 20:26:56.83ID:J+/qaxiI 申し訳ありません、今VScodeのsetting.jsonを確認したらいつの間にか
"code-runner.executorMap": {
"cpp": "cd $dir && runFiles=`ls *.cpp` && g++ -std=c++17 `echo ${runFiles}` -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
},
が書かれてました。恐らくですが、最近別の機会でc++17のオプションを使う時にそのまま他の方の
設定を写していたのと最近一つのファイル内に複数のフォルダ作ることが無かったからだと思います。
昼から何度も長文でお騒がせして申し訳ありませんでしたorz
エントリポイントに関しては大変参考になりました。
"code-runner.executorMap": {
"cpp": "cd $dir && runFiles=`ls *.cpp` && g++ -std=c++17 `echo ${runFiles}` -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
},
が書かれてました。恐らくですが、最近別の機会でc++17のオプションを使う時にそのまま他の方の
設定を写していたのと最近一つのファイル内に複数のフォルダ作ることが無かったからだと思います。
昼から何度も長文でお騒がせして申し訳ありませんでしたorz
エントリポイントに関しては大変参考になりました。
545デフォルトの名無しさん
2020/01/17(金) 10:27:22.98ID:fMuYUnvE >>522
戻り値の型をテンプレートにするのってどうするの
戻り値の型をテンプレートにするのってどうするの
546デフォルトの名無しさん
2020/01/17(金) 14:15:38.50ID:GiayRj2a Tかautoでいんじゃね
あるいはdecltype
あるいはdecltype
547デフォルトの名無しさん
2020/01/17(金) 14:18:21.61ID:fMuYUnvE 戻り値Tで関数オーバーロード出来る?
548デフォルトの名無しさん
2020/01/17(金) 14:37:12.74ID:GiayRj2a 戻り値が違うだけだと無理よ
549デフォルトの名無しさん
2020/01/17(金) 14:39:16.16ID:GiayRj2a あ、戻り値だけ指定させる関数テンプレートならオーバーロードしなくても
その関数テンプレート一つでいける
ただし推論できないので呼び出すときにテンプレート引数の指定は必須
その関数テンプレート一つでいける
ただし推論できないので呼び出すときにテンプレート引数の指定は必須
550デフォルトの名無しさん
2020/01/17(金) 18:48:04.18ID:PzZl0Asa autoと型指定で同じコードに落ちるとは限らないというか、おそらく同じコードにならないので、よく考える必要があると思います。
551はちみつ餃子 ◆8X2XSCHEME
2020/01/19(日) 01:28:50.10ID:pwo1VM/U decltype(auto) とも使い分けが必要なの本当にアレだよな……
552デフォルトの名無しさん
2020/01/20(月) 10:42:02.42ID:CUHpWb/I ptrってなんて読むん
553デフォルトの名無しさん
2020/01/20(月) 11:17:45.19ID:wNCym70P ポインタ
554デフォルトの名無しさん
2020/01/20(月) 11:47:15.83ID:rZl1icD3 ハリー・ポッター
555デフォルトの名無しさん
2020/01/20(月) 11:52:47.26ID:quHzxrTX ペトリザラ
556デフォルトの名無しさん
2020/01/20(月) 12:52:13.10ID:CUHpWb/I ずっと脳内でピトラって読んでたがポインタか
ありがとう
ありがとう
557デフォルトの名無しさん
2020/01/20(月) 13:19:51.66ID:0GX6odYx int_ptr
INT_PTR
*int
全部違う型?
INT_PTR
*int
全部違う型?
558デフォルトの名無しさん
2020/01/20(月) 13:20:08.19ID:0GX6odYx int *
ですすんまそ
ですすんまそ
559はちみつ餃子 ◆8X2XSCHEME
2020/01/20(月) 15:13:06.58ID:UOBRzIUl >>557
INT_PTR は Windows SDK で定義されてるやつのことだと思うけど、
標準で言うところの intptr_t に相当するやつ。
int のポインタじゃなくて、ポインタを格納できる (のに充分な幅がある) int っていう意味。
INT_PTR は Windows SDK で定義されてるやつのことだと思うけど、
標準で言うところの intptr_t に相当するやつ。
int のポインタじゃなくて、ポインタを格納できる (のに充分な幅がある) int っていう意味。
560デフォルトの名無しさん
2020/01/20(月) 15:46:05.19ID:UDU8umXR >>507
これって2項間はいけるけど
v=l+z+w;
とか3項間以上の場合
typename L::value_type
operator[](std::size_t i) const{
・・・
}
ここで、コンパイル通らないんじゃないの?
+wの部分で(l+z)::valu_typeを参照し、
class Expressionで宣言されてないvalu_typeを参照することになってエラーになるはず。
auto
operator[](std::size_t i) const{
・・・
}
では何の問題もない。
これって2項間はいけるけど
v=l+z+w;
とか3項間以上の場合
typename L::value_type
operator[](std::size_t i) const{
・・・
}
ここで、コンパイル通らないんじゃないの?
+wの部分で(l+z)::valu_typeを参照し、
class Expressionで宣言されてないvalu_typeを参照することになってエラーになるはず。
auto
operator[](std::size_t i) const{
・・・
}
では何の問題もない。
561デフォルトの名無しさん
2020/01/20(月) 15:51:26.28ID:UDU8umXR562デフォルトの名無しさん
2020/01/20(月) 15:58:55.44ID:UDU8umXR 一応
gcc 9.1で確認してみた
error: no type named ‘value_type’ in ‘class Expression<Vector<int>, Plus, Vector<int>
>’
11 | typename L::value_type operator[](std::size_t i) const
だな。
>>507のコードはコンパイルすら通らない間違いコードだ。
gcc 9.1で確認してみた
error: no type named ‘value_type’ in ‘class Expression<Vector<int>, Plus, Vector<int>
>’
11 | typename L::value_type operator[](std::size_t i) const
だな。
>>507のコードはコンパイルすら通らない間違いコードだ。
563デフォルトの名無しさん
2020/01/20(月) 16:08:08.21ID:UDU8umXR コンパイル通らないってのは
以下を追加したときの話ね
Vector<int> w{ 5, 4, 3 };
v = l + r +w;
2項間では通るが3項間以上の式では通らない。
ex-templateを使うメリットが全くないコードが>>507
以下を追加したときの話ね
Vector<int> w{ 5, 4, 3 };
v = l + r +w;
2項間では通るが3項間以上の式では通らない。
ex-templateを使うメリットが全くないコードが>>507
564デフォルトの名無しさん
2020/01/20(月) 17:26:42.62ID:UDU8umXR auto
operator[](std::size_t i) const{
とせず、value_type直接指定でいくためには
class expressionの中で
もう一度
using value_type = typename L:value_type;
を宣言して、
value_type
operator[](size_t i) const{
・・・
}
で多項間でも問題なくいけるはず。
operator[](std::size_t i) const{
とせず、value_type直接指定でいくためには
class expressionの中で
もう一度
using value_type = typename L:value_type;
を宣言して、
value_type
operator[](size_t i) const{
・・・
}
で多項間でも問題なくいけるはず。
565デフォルトの名無しさん
2020/01/21(火) 18:43:12.30ID:of4oLLe2566デフォルトの名無しさん
2020/01/21(火) 22:39:57.57ID:jv9UY41A567デフォルトの名無しさん
2020/01/21(火) 22:42:13.76ID:jv9UY41A568デフォルトの名無しさん
2020/01/21(火) 23:33:50.08ID:oeYN0gBf え?
SIMDで並列化できたら電力あたりのパフォーマンスはあがるぞ
ETと比べるものとは思わないが
SIMDで並列化できたら電力あたりのパフォーマンスはあがるぞ
ETと比べるものとは思わないが
569デフォルトの名無しさん
2020/01/22(水) 10:04:13.26ID:RE1hbZ/o >>566
お前大して攻撃的でもない書き込みにすぐ喧嘩売ってイキるの辞めたほうがいいよ
俺はETとSIMD両方使って自作の線形代数ライブラリ(4行4列まで限定だが)作った上で言ってる
恥書く前に謝っとけよ
>能力不足をHWに補ってもらわないとな
アホだろお前、ETがSIMD以上に速度上がると思ってんの?
>ETと比べるものとは思わないが
確かに速度が目当てと勝手に限定してたね
お前大して攻撃的でもない書き込みにすぐ喧嘩売ってイキるの辞めたほうがいいよ
俺はETとSIMD両方使って自作の線形代数ライブラリ(4行4列まで限定だが)作った上で言ってる
恥書く前に謝っとけよ
>能力不足をHWに補ってもらわないとな
アホだろお前、ETがSIMD以上に速度上がると思ってんの?
>ETと比べるものとは思わないが
確かに速度が目当てと勝手に限定してたね
570デフォルトの名無しさん
2020/01/22(水) 10:18:16.91ID:s6VTVCIo 最近のコンパイラならETできれいに展開しておけば
勝手にはSIMD化してくれんじゃない?
勝手にはSIMD化してくれんじゃない?
571デフォルトの名無しさん
2020/01/22(水) 10:27:28.86ID:RE1hbZ/o Intelのは使ったことないんで知らんけど、VCだと基本そういうのは期待できないよ
(最適化かけたEigenのコードの逆アセでも見てみればわかる)
単一の要素の計算にxmmレジスタ使ってはくれるけど並列にやってくれることは無い
SIMDに収まる範囲のベクトルなら、手動できっちりSIMD使いつつ
インターフェースを使いやすくするのは普通に出来るから先にそうした方がいい
(最適化かけたEigenのコードの逆アセでも見てみればわかる)
単一の要素の計算にxmmレジスタ使ってはくれるけど並列にやってくれることは無い
SIMDに収まる範囲のベクトルなら、手動できっちりSIMD使いつつ
インターフェースを使いやすくするのは普通に出来るから先にそうした方がいい
572デフォルトの名無しさん
2020/01/22(水) 12:20:19.61ID:mLtdNNMm573デフォルトの名無しさん
2020/01/27(月) 00:16:58.09ID:kzLo5KUi class vec2
{
{
574デフォルトの名無しさん
2020/01/28(火) 10:57:31.95ID:/YDDbz91 // >>573
}
}
575デフォルトの名無しさん
2020/01/28(火) 15:18:36.74ID:PrwWvwu0 // >>574
;
;
576デフォルトの名無しさん
2020/01/29(水) 08:49:45.27ID:RKbTXMV3 なんかわろた
577デフォルトの名無しさん
2020/01/29(水) 13:23:40.81ID:zE4LbE2k >>575
:q!
:q!
578はちみつ餃子 ◆8X2XSCHEME
2020/01/29(水) 17:06:53.33ID:F1ZVbYEm は? C-x C-c だが。
579デフォルトの名無しさん
2020/01/29(水) 19:14:06.94ID:cVCtJzaf >>577
保存しないで抜けるんじゃないw
保存しないで抜けるんじゃないw
580デフォルトの名無しさん
2020/01/31(金) 16:53:29.94ID:Hjj/uk/N g++やclangで-std=c++17オプションをterminal、VScode共に一括で
デフォルトにしたいのですが何か良い方法ってありませんか?
環境はMac OS Mojaveです
デフォルトにしたいのですが何か良い方法ってありませんか?
環境はMac OS Mojaveです
581デフォルトの名無しさん
2020/01/31(金) 22:24:21.02ID:I/eJOw0W >>569
それがどうした?
4x4?それが自慢か雑魚野郎
こっちは自由にサイズ変更可能な行列演算ライブラリを20年以上前から仕事で使ってる。
そして一定サイズ以上の行列乗算では式テンプレートではまったくパフォーマンス向上できないこともわかってる。
土下座すんのはテメエなんだよ一知半解の低脳野郎
ちなみに>>500のサイトにあるBlitzの有名なコードだが、operator=内部で =r(i.j)などとして、行列乗算(each productではなく)に拡張した場合、
式テンプレートを使用しない方式と比べて100x100行列なら1000倍以上の速度低下を引き起こす
>アホだろお前、ETがSIMD以上に速度上がると思ってんの?
はぁ? 異なるHW条件持ち出してきて速度向上ほざいてアホの極みか低脳
それがどうした?
4x4?それが自慢か雑魚野郎
こっちは自由にサイズ変更可能な行列演算ライブラリを20年以上前から仕事で使ってる。
そして一定サイズ以上の行列乗算では式テンプレートではまったくパフォーマンス向上できないこともわかってる。
土下座すんのはテメエなんだよ一知半解の低脳野郎
ちなみに>>500のサイトにあるBlitzの有名なコードだが、operator=内部で =r(i.j)などとして、行列乗算(each productではなく)に拡張した場合、
式テンプレートを使用しない方式と比べて100x100行列なら1000倍以上の速度低下を引き起こす
>アホだろお前、ETがSIMD以上に速度上がると思ってんの?
はぁ? 異なるHW条件持ち出してきて速度向上ほざいてアホの極みか低脳
582デフォルトの名無しさん
2020/01/31(金) 22:45:37.50ID:I/eJOw0W >>569
あぁ
言い忘れてたわ式テンプレートは一時領域コピー時間の削減と言う意味で3項以上と書いてるわけだが、
一時領域の必要ない2項でメリットがあるというなら挙げてミロよ低脳www
寝ぼけんな雑魚野郎
あぁ
言い忘れてたわ式テンプレートは一時領域コピー時間の削減と言う意味で3項以上と書いてるわけだが、
一時領域の必要ない2項でメリットがあるというなら挙げてミロよ低脳www
寝ぼけんな雑魚野郎
583デフォルトの名無しさん
2020/01/31(金) 23:43:58.62ID:HzrC4w9c 団子だろ
584デフォルトの名無しさん
2020/01/31(金) 23:56:24.08ID:I/eJOw0W >>479
#pragma omp critical
使ってるコードで同じエラー出たわ
criticalセクションが無ければこのエラーは出ない
無くしたら動かんけどww
19.1のバグやね
まだ、気づいてない人多いんだろな検索してもヒットしない
#pragma omp critical
使ってるコードで同じエラー出たわ
criticalセクションが無ければこのエラーは出ない
無くしたら動かんけどww
19.1のバグやね
まだ、気づいてない人多いんだろな検索してもヒットしない
585デフォルトの名無しさん
2020/02/01(土) 04:58:28.47ID:sDMEFbxi >>581
ずいぶん反論に時間がかかったなw
>20年以上前から仕事で”使ってる”
作った側ではないなら実装時の問題とかには疎いんじゃねーの?
>Blitzの有名なコード
Blitzのコードとかどっかに書いてたか?
Blitzのソース読んだことないんで具体的にどのヘッダか示してくれるか
というかあんなクソ単純な説明のためのサンプルと同等のコードとは考えにくいが
>100x100行列なら1000倍以上の速度低下を引き起こす
へー。で??
俺別にETを絶賛などしてないんだが
質問者の話もそういう可変要素のやつじゃなかったよね
>異なるHW条件持ち出してきて
お前が
>能力不足をHWに補ってもらわないとなww
とかアホなこと抜かしたからだろ
ずいぶん反論に時間がかかったなw
>20年以上前から仕事で”使ってる”
作った側ではないなら実装時の問題とかには疎いんじゃねーの?
>Blitzの有名なコード
Blitzのコードとかどっかに書いてたか?
Blitzのソース読んだことないんで具体的にどのヘッダか示してくれるか
というかあんなクソ単純な説明のためのサンプルと同等のコードとは考えにくいが
>100x100行列なら1000倍以上の速度低下を引き起こす
へー。で??
俺別にETを絶賛などしてないんだが
質問者の話もそういう可変要素のやつじゃなかったよね
>異なるHW条件持ち出してきて
お前が
>能力不足をHWに補ってもらわないとなww
とかアホなこと抜かしたからだろ
586デフォルトの名無しさん
2020/02/01(土) 05:17:20.41ID:sDMEFbxi >>582
>一時領域の必要ない2項でメリットがあるというなら挙げてミロよ低脳www
2項で一時領域が必要ないのはRVO前提にしてんだろうけど
お前コンストラクタしか頭に無いだろ
あと、よっぽど自信がおありのようだから質問してやるが
上に挙がってたコード例のようなやり方でバカ正直に行列の乗算のような計算を
仮に3項以上でやると重大な問題が起きるわけだが、それが何か即答できるよな?
>一時領域の必要ない2項でメリットがあるというなら挙げてミロよ低脳www
2項で一時領域が必要ないのはRVO前提にしてんだろうけど
お前コンストラクタしか頭に無いだろ
あと、よっぽど自信がおありのようだから質問してやるが
上に挙がってたコード例のようなやり方でバカ正直に行列の乗算のような計算を
仮に3項以上でやると重大な問題が起きるわけだが、それが何か即答できるよな?
587デフォルトの名無しさん
2020/02/01(土) 07:35:36.44ID:tav2AwxI 最適化、高速化は具体的な用途とセットじゃないと語っても意味がない
要素ごとに演算すれば良い巨大ベクタと
1個の結果を得るのに広範囲にアクセスしなきゃならない巨大行列の乗算
全然違う話
要素ごとに演算すれば良い巨大ベクタと
1個の結果を得るのに広範囲にアクセスしなきゃならない巨大行列の乗算
全然違う話
588デフォルトの名無しさん
2020/02/01(土) 07:57:11.83ID:sDMEFbxi 大きな行列の場合、高速化手法なんて他にいくつもあるからね(詳しくはないが
それ以前になぜ遅くなるのかも分かってない&ET以前にSIMDと言われて
「能力不足をHWに補ってもらわないとなww」とか(ライブラリ実装したことある立場ではないにもかかわらず)
平気で言える時点で、20年仕事でってのは嘘だろう
C++かじっただけのどこかの暇な学生だろ
それ以前になぜ遅くなるのかも分かってない&ET以前にSIMDと言われて
「能力不足をHWに補ってもらわないとなww」とか(ライブラリ実装したことある立場ではないにもかかわらず)
平気で言える時点で、20年仕事でってのは嘘だろう
C++かじっただけのどこかの暇な学生だろ
589デフォルトの名無しさん
2020/02/01(土) 08:20:06.35ID:tav2AwxI HWを使わない最適化(高速化)なんてあり得ないからね
SIMD、スレッド、キャッシュ、(GPU、FPGA、...)
これらを有効に使うのが最適化
SIMD、スレッド、キャッシュ、(GPU、FPGA、...)
これらを有効に使うのが最適化
590デフォルトの名無しさん
2020/02/01(土) 08:23:05.35ID:tav2AwxI 高速化はどうでも良くて単に楽に書きたいだけならC/C++は向いてない
591デフォルトの名無しさん
2020/02/01(土) 12:22:48.15ID:TULylXcw >>589
アルゴリズムはハード非依存と言っていいでしょ
アルゴリズムはハード非依存と言っていいでしょ
592デフォルトの名無しさん
2020/02/01(土) 13:49:03.18ID:eXUHWthh 「ソフトウェアに対して本当に真剣な人は、独自のハードウェアを作るべきだ。」
アラン・ケイ
アラン・ケイ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 ★3 [蚤の市★]
- 元プロ野球選手・堂上隼人(43)を20代女性2人へのわいせつ未遂容疑で8回目の逮捕…これまでの被害者は10代・20代の女性11人に [Anonymous★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 ★4 [蚤の市★]
- 【高校野球】なぜ『7回制』は反対多数でも止まらないか… 高野連が「全員の命」守るために貫く伝統より改革の姿勢 [冬月記者★]
- JAが"政府の備蓄米買い上げ"見越して価格下げず!?「古いコメは食用向きでないなどと理由をつけ...」専門家解説 [煮卵★]
- 【テレビ】石破前首相 中国レーダー照射「フェーズ上がってる」と指摘も「日本の世論が激高するのは避ける必要が…」 [少考さん★]
- 統一教会っていらない田んぼ畑ビルディング(アスベスト)も引き取ってくれるの? [358382861]
- 【高市悲報】自衛隊「実は事前に現場海域で中国軍から空母での発着訓練をすると通告がありました」え…?😨 [931948549]
- 【悲報】山里亮太(南海キャンディーズ)さん [329329848]
- 【高市悲報】日本が🇨🇳輸出規制したフォトレジスト、早速韓国企業が中国に売り込みかけて日本の対抗手段もうなくなるwww [709039863]
- 中国父「日本の一般大衆は高市を支持しておらず、反対している人も多い。悪いのは日本国民ではなく高市!」 すまんこれほんと? [271912485]
- 高市「中国さんお願い電話で話そ、このままじゃ武力衝突になっちゃう😭」日中間の専用電話に日本側からかけるも無視される [931948549]
