スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。
過去ログ
01 http://pc11.2ch.net/test/read.cgi/tech/1167476845/
02 http://pc11.2ch.net/test/read.cgi/tech/1178503366/
03 http://pc11.2ch.net/test/read.cgi/tech/1187521676/
04 http://pc11.2ch.net/test/read.cgi/tech/1221633708/
05 http://pc11.2ch.net/test/read.cgi/tech/1230516307/
06 http://pc11.2ch.net/test/read.cgi/tech/1231564903/
07 http://pc11.2ch.net/test/read.cgi/tech/1232983248/
08 http://pc12.2ch.net/test/read.cgi/tech/1235921779/
09 http://pc12.2ch.net/test/read.cgi/tech/1240022781/
10 http://pc12.2ch.net/test/read.cgi/tech/1242300936/
11 http://pc12.2ch.net/test/read.cgi/tech/1245059383/
12 http://pc12.2ch.net/test/read.cgi/tech/1248010352/
13 http://pc12.2ch.net/test/read.cgi/tech/1260842197/
14 http://pc12.2ch.net/test/read.cgi/tech/1269273471/
15 http://pc12.2ch.net/test/read.cgi/tech/1273368706/
16 http://hibari.2ch.net/test/read.cgi/tech/1279285647/
17 http://hibari.2ch.net/test/read.cgi/tech/1285115590/
18 http://hibari.2ch.net/test/read.cgi/tech/1291571263/
19 http://hibari.2ch.net/test/read.cgi/tech/1308106024/
20 http://toro.2ch.net/test/read.cgi/tech/1316013463/
21 http://toro.2ch.net/test/read.cgi/tech/1342285511/
22 http://peace.2ch.net/test/read.cgi/tech/1399911167/
23 http://peace.2ch.net/test/read.cgi/tech/1420379468/
24 http://echo.2ch.net/test/read.cgi/tech/1448685034/
探検
スレを勃てるまでもないC/C++の質問はここで 25 [隔離病棟]©2ch.net
2016/08/14(日) 00:04:05.53ID:z6U1tRVC
2017/02/01(水) 23:13:45.79ID:V+KME3Sb
もし>>61の場合に当て嵌るなら
ifstreamをスコープの内側にいれてデストラクタをEND出力の前に
呼ぶことは出来るはずです
int main(int argc, char* argv[]) {
{ // このスコープを追加することで
ifstream ifs(...);
...
} // デストラクタが確実に呼ばれていることを保証
cout << "END" << endl;
}
(↑コンパイル通してないので過信しないでください)
この場合だと、ENDが出力されずにプログラムも終了しない事が観察できるかと思います
しかし、(処理の内容が解らないので断定できませんが)
6万行なら5分で終わらないってこともなさそうな気もしますね……
"getline"でダンプということは読み込んでから出力ですよね
んー 大雑把に考えられるのはデバッグビルドで
重いデバッグ用のコードが追加されてるとかでしょうか
……なんとなくこれは外してる気がします すいません
実際のコードと環境を見てみないとなんともってとこです
ifstreamをスコープの内側にいれてデストラクタをEND出力の前に
呼ぶことは出来るはずです
int main(int argc, char* argv[]) {
{ // このスコープを追加することで
ifstream ifs(...);
...
} // デストラクタが確実に呼ばれていることを保証
cout << "END" << endl;
}
(↑コンパイル通してないので過信しないでください)
この場合だと、ENDが出力されずにプログラムも終了しない事が観察できるかと思います
しかし、(処理の内容が解らないので断定できませんが)
6万行なら5分で終わらないってこともなさそうな気もしますね……
"getline"でダンプということは読み込んでから出力ですよね
んー 大雑把に考えられるのはデバッグビルドで
重いデバッグ用のコードが追加されてるとかでしょうか
……なんとなくこれは外してる気がします すいません
実際のコードと環境を見てみないとなんともってとこです
64sage
2017/02/01(水) 23:43:55.55ID:FDjJl8e/ 再現コードです。
end,end2,end3すべて出力されてから固まってしまいます。
何かわかることありますでしょうか?
#include<fstream>
#include<iostream>
using namespace std;
int main(int argc,char **argv)
{
{
ifstream f("list.txt");
if(!f.fail())
{
int i=0;
char l[1024];
while(f)
{
l[0]='\0';
f.getline(l,1000);
cout<<i<<" "<<l<<endl;
i++;
}
cout<<"end"<<endl;
}
cout<<"end2"<<endl;
}
cout<<"end3"<<endl;
}
end,end2,end3すべて出力されてから固まってしまいます。
何かわかることありますでしょうか?
#include<fstream>
#include<iostream>
using namespace std;
int main(int argc,char **argv)
{
{
ifstream f("list.txt");
if(!f.fail())
{
int i=0;
char l[1024];
while(f)
{
l[0]='\0';
f.getline(l,1000);
cout<<i<<" "<<l<<endl;
i++;
}
cout<<"end"<<endl;
}
cout<<"end2"<<endl;
}
cout<<"end3"<<endl;
}
2017/02/02(木) 00:06:13.31ID:XVpKeu5E
list.txtの内容は意図どおり表示されてますかね?
こちらの環境(Linux gcc4.9.4, clang3.9.0)だと70000行のデータで
得に問題なく出力、終了しました
こちらの環境(Linux gcc4.9.4, clang3.9.0)だと70000行のデータで
得に問題なく出力、終了しました
2017/02/02(木) 00:10:41.68ID:uXhy1oZf
意図通り出力されてます。
環境の問題ですか、うーん厄介ですね。
cygwinとx86_64-w64-mingw32-g++.exeというコンパイラでやってます。
とりあえず、コードに問題はないということで、ありがとうございます。
環境の問題ですか、うーん厄介ですね。
cygwinとx86_64-w64-mingw32-g++.exeというコンパイラでやってます。
とりあえず、コードに問題はないということで、ありがとうございます。
2017/02/02(木) 00:24:50.02ID:XVpKeu5E
ああ mingwですね 昔よく使ってました
プログラムは終了してても コンソールが残っちゃうってやつはよくありました
なら"-mconsole"(だったと思う) flagをg++に与えて見てください
その辺のフラグで解消できるものだったような気がします
"-mwindows"ってのもあったので逆だったかもしれないんですが…(曖昧
プログラムは終了してても コンソールが残っちゃうってやつはよくありました
なら"-mconsole"(だったと思う) flagをg++に与えて見てください
その辺のフラグで解消できるものだったような気がします
"-mwindows"ってのもあったので逆だったかもしれないんですが…(曖昧
6860
2017/02/02(木) 00:31:49.82ID:uXhy1oZf cygwinじゃなくてコマンドプロンプトでやったら終了しましたw
謎すぎw
とりあえず、解決?ということでありがとうございました。
謎すぎw
とりあえず、解決?ということでありがとうございました。
2017/02/02(木) 00:32:54.78ID:XVpKeu5E
ありゃw 了解です お疲れ様ー
2017/02/02(木) 20:06:20.90ID:twb4E7Xn
数独を解くプログラムについてなんですが縦、横の検索はできても3x3で区切られたブロック内を列挙する方法がわかりません
どうやって3x3で区切られたブロックを列挙すればいいでしょうか?
どうやって3x3で区切られたブロックを列挙すればいいでしょうか?
2017/02/02(木) 20:35:41.21ID:uXhy1oZf
for文2重にすればええんちゃう?
2017/02/02(木) 21:30:56.78ID:uZGYbIMg
素直に2*2の4重ループだろ
外側の縦横2重ループでまず探索するブロックを決めて
内側の縦横2重ループでブロック内の全マスを列挙する
外側の縦横2重ループでまず探索するブロックを決めて
内側の縦横2重ループでブロック内の全マスを列挙する
2017/02/03(金) 00:04:44.30ID:ITjsij3m
列挙対象の座標のリストを作るとかもいいかもね。
それなら縦横ブロックを統一的に扱える。
それなら縦横ブロックを統一的に扱える。
2017/02/03(金) 08:10:45.56ID:ptvBupX8
俺なら(x, y)座標を格納する構造体を作って、
それを9つ集めた配列、を9つ集めた配列、でやるかな。
3x3のブロックに0-8の添字をつける感じで。
ブロック番号(0-2)を3倍してブロック内座標(0-2)を足す、で
盤面全体での座標値(0-8)を得られる、X軸とY軸についてそれぞれ算出、
というやり方もあるが、この文面で分かりにくいと感じたら
コードを書いても分かりにくい方法かと。
それを9つ集めた配列、を9つ集めた配列、でやるかな。
3x3のブロックに0-8の添字をつける感じで。
ブロック番号(0-2)を3倍してブロック内座標(0-2)を足す、で
盤面全体での座標値(0-8)を得られる、X軸とY軸についてそれぞれ算出、
というやり方もあるが、この文面で分かりにくいと感じたら
コードを書いても分かりにくい方法かと。
75片山博文MZ ◆T6xkBnTXz7B0
2017/02/03(金) 08:24:14.76ID:6yKPOmXk f: (x, y) |-> (x * 9 + y).
g: (n) |-> (n / 9, n % 9)
という2つの1対1写像があるから、それを使えばint a[9][9];でもint b[9 * 9];でも同じ結果が得られる。
g: (n) |-> (n / 9, n % 9)
という2つの1対1写像があるから、それを使えばint a[9][9];でもint b[9 * 9];でも同じ結果が得られる。
2017/02/04(土) 01:09:26.83ID:2qbguusO
書いたぞ。
#include<iostream>
#include<vector>
using namespace std;
class Point{
public:
int x,y;
Point(int a,int b){x=a;y=b;}};
ostream &operator<<(ostream &o,Point p){o<<"("<<p.x<<","<<p.y<<")";return o;}
vector<vector<Point> > point_list;
init_list(){
vector<Point> l;
for(int x=0;x<9;++x){
for(int y=0;y<9;++y)l.push_back(Point(x,y));
point_list.push_back(l);l.clear();}
for(int y=0;y<9;++y){
for(int x=0;x<9;++x)l.push_back(Point(x,y));
point_list.push_back(l);l.clear();}
for(int X=0;X<9;X+=3){for(int Y=0;Y<9;Y+=3){
for(int x=0;x<3;++x){for(int y=0;y<3;++y){
l.push_back(Point(X+x,Y+y));}}
point_list.push_back(l);l.clear();}}}
int main(){
init_list();
for(int i=0;i<point_list.size();++i){for(int j=0;j<point_list[i].size();++j){
cout<<point_list[i][j]<<" ";}
cout<<endl;}
}
#include<iostream>
#include<vector>
using namespace std;
class Point{
public:
int x,y;
Point(int a,int b){x=a;y=b;}};
ostream &operator<<(ostream &o,Point p){o<<"("<<p.x<<","<<p.y<<")";return o;}
vector<vector<Point> > point_list;
init_list(){
vector<Point> l;
for(int x=0;x<9;++x){
for(int y=0;y<9;++y)l.push_back(Point(x,y));
point_list.push_back(l);l.clear();}
for(int y=0;y<9;++y){
for(int x=0;x<9;++x)l.push_back(Point(x,y));
point_list.push_back(l);l.clear();}
for(int X=0;X<9;X+=3){for(int Y=0;Y<9;Y+=3){
for(int x=0;x<3;++x){for(int y=0;y<3;++y){
l.push_back(Point(X+x,Y+y));}}
point_list.push_back(l);l.clear();}}}
int main(){
init_list();
for(int i=0;i<point_list.size();++i){for(int j=0;j<point_list[i].size();++j){
cout<<point_list[i][j]<<" ";}
cout<<endl;}
}
2017/02/04(土) 01:13:42.21ID:2qbguusO
そういや数独ってNP完全なんだっけ?
単純な消去法以外アルゴリズム思いつかんが。
単純な消去法以外アルゴリズム思いつかんが。
2017/02/21(火) 13:16:05.38ID:PhJVPA+A
#include <stdio.h>
#include <string.h>
int main(void)
{
char *p, str[32];
scanf("%s", str);
while ((p = strpbrk(str, "ab")) != NULL) *p = 'c';
printf("%s\n", str);
return 0;
}
"ab"の文字列を"c"に置換したいんだけどaもbも一文字ずつ置換えられて"cc"ってなってしまう
どうすりゃいいんですかね…
#include <string.h>
int main(void)
{
char *p, str[32];
scanf("%s", str);
while ((p = strpbrk(str, "ab")) != NULL) *p = 'c';
printf("%s\n", str);
return 0;
}
"ab"の文字列を"c"に置換したいんだけどaもbも一文字ずつ置換えられて"cc"ってなってしまう
どうすりゃいいんですかね…
2017/02/21(火) 15:20:35.77ID:7lKrpDmc
strpbrk() は「第2引数の文字列に含まれる文字のどれか」への
ポインタを返すから strpbrk(str, "ab") だと返るのは
文字'a'の位置か文字'b'の位置だよ。
"ab"という部分文字列の位置が欲しいなら strstr(str, "ab") を使うべき。
加えて "ab" を "c" に置換したい場合、置換後の字数が減るのだから、
'a' を 'c' に上書きした後、strの'b'より後ろを1byteずつ詰めなきゃならない。
もっと一般的な文字列置換関数を作るとなると、かなり面倒だわね。
ポインタを返すから strpbrk(str, "ab") だと返るのは
文字'a'の位置か文字'b'の位置だよ。
"ab"という部分文字列の位置が欲しいなら strstr(str, "ab") を使うべき。
加えて "ab" を "c" に置換したい場合、置換後の字数が減るのだから、
'a' を 'c' に上書きした後、strの'b'より後ろを1byteずつ詰めなきゃならない。
もっと一般的な文字列置換関数を作るとなると、かなり面倒だわね。
2017/02/21(火) 15:30:30.87ID:2UxBH0C2
if(strcmp(str, "ab") == 0); strcpy(str, "c");
これじゃあかんの?
これじゃあかんの?
2017/02/21(火) 15:32:19.27ID:2UxBH0C2
0ab0→0c0って事なら忘れて
82デフォルトの名無しさん
2017/03/19(日) 06:58:05.16ID:o9adXXiq C言語ではないんですが、以下の事について教えて頂けないでしょうか?
"algo": "Lyra2REv2",
"threads": 0,
"cpu-priority": 0,
"cpu-affinity": -1,
"benchmark": false,
"debug": false,
"protocol": false,
"quiet": false
cpuminer-multi-windows の設定をしているのですが
"threads""cpu-priority""cpu-affinity"が何をさしているのか
よくわかりません。
私は8コア16スレッドのCPUを二個搭載しているPCを使っているのですが
CPUをフルに活用できるように設定したいのです。
ご助力頂けると幸いです。よろしくお願いします。
"algo": "Lyra2REv2",
"threads": 0,
"cpu-priority": 0,
"cpu-affinity": -1,
"benchmark": false,
"debug": false,
"protocol": false,
"quiet": false
cpuminer-multi-windows の設定をしているのですが
"threads""cpu-priority""cpu-affinity"が何をさしているのか
よくわかりません。
私は8コア16スレッドのCPUを二個搭載しているPCを使っているのですが
CPUをフルに活用できるように設定したいのです。
ご助力頂けると幸いです。よろしくお願いします。
2017/03/19(日) 07:18:53.13ID:bkt1N2YW
Cのことじゃないなら何のことなのかぐらい書けよ
モナコインか発掘か?だったらそのスレで聞けよ。シネ
モナコインか発掘か?だったらそのスレで聞けよ。シネ
2017/03/19(日) 14:10:20.03ID:oNRFZCzo
俺は煽り・叩きをしない人間だが、今回ばかりは83への同情を禁じ得ない
2017/03/19(日) 14:43:20.30ID:o9adXXiq
返事ありがとうございます
まず、何の言語かわからなかったのと
モナコインの質問板がなかったの、ここに書き込みました
向こうのどっか適当なところに書き込みします
お騒がせしました
まず、何の言語かわからなかったのと
モナコインの質問板がなかったの、ここに書き込みました
向こうのどっか適当なところに書き込みします
お騒がせしました
2017/03/19(日) 15:18:21.74ID:cwNaGN41
何の言語かわからなくても質問できるスレだってあるのににに
2017/04/13(木) 08:52:14.43ID:G0/b3aDb
class Parent{
int i;
};
class Child : Parent{
char ch;
};
Parent *ptr = new Child();
delete ptr;
こういうことをした時にメモリを確保するときはChildの変数chの分まで多くメモリを確保してると思うのですが
解放するときにちゃんとchの部分も解放されますか?
delete (Child*)ptr;
みたいにしないとダメですか?
int i;
};
class Child : Parent{
char ch;
};
Parent *ptr = new Child();
delete ptr;
こういうことをした時にメモリを確保するときはChildの変数chの分まで多くメモリを確保してると思うのですが
解放するときにちゃんとchの部分も解放されますか?
delete (Child*)ptr;
みたいにしないとダメですか?
2017/04/13(木) 09:47:58.57ID:xWAyKptX
>>87
デストラクタがvirtualなら必要ないけどこの場合違うからキャストが必要かな
デストラクタがvirtualなら必要ないけどこの場合違うからキャストが必要かな
2017/04/13(木) 09:54:46.51ID:knppr/uB
>解放するときにちゃんとchの部分も解放されますか?
されない
>delete (Child*)ptr;
>みたいにしないとダメですか?
それでも解放はできるけど、それじゃ継承の利点であるポリモーフィズムが台無しになるので
デストラクタを仮想関数にするのが常套手段
class Parent{
int i;
public:
virtual ~Parent(){}
};
class Child : public Parent{
char ch;
};
されない
>delete (Child*)ptr;
>みたいにしないとダメですか?
それでも解放はできるけど、それじゃ継承の利点であるポリモーフィズムが台無しになるので
デストラクタを仮想関数にするのが常套手段
class Parent{
int i;
public:
virtual ~Parent(){}
};
class Child : public Parent{
char ch;
};
2017/04/13(木) 11:21:16.25ID:Wi4DC5Bh
2017/04/13(木) 11:54:43.94ID:G0/b3aDb
どっちを信じたら良いんですか!?
2017/04/13(木) 12:59:56.01ID:knppr/uB
基底クラスのデストラクタはvirtualにしておけ
>>91も間違いでは無いが、chの型が変わっただけで前提が崩れる話だよ
>>91も間違いでは無いが、chの型が変わっただけで前提が崩れる話だよ
2017/04/13(木) 13:07:52.52ID:grSNqbAR
誰かが答えた後にでてきて何の説明もなくただ前の否定や異なる結論だけを言うやつは
(結果的に正しいことだったとしても)無視すればええんや
(結果的に正しいことだったとしても)無視すればええんや
2017/04/13(木) 21:32:13.97ID:r2gjPspU
確かに
96デフォルトの名無しさん
2017/04/13(木) 21:49:16.84ID:Qxk7VllX せやな
2017/05/06(土) 11:45:32.33ID:3nLTZXlU
深い階層を表すのに適したデータ構造というかクラスはなんですか?
unordered_mapを使ってキー/値のペアで作ったツリー構造があるんですが、
最適化をオフにすると500くらいの深さでもスタックオーバーフローが起きてしまいます。
Visual Studioを使っているのでReleaseビルャhのC++ライブラリとDebugのものは組み合わせられないし、
かといって常に最適化オンだとデバッグが不便です。
何かいい方法はありませんか?お願いします
unordered_mapを使ってキー/値のペアで作ったツリー構造があるんですが、
最適化をオフにすると500くらいの深さでもスタックオーバーフローが起きてしまいます。
Visual Studioを使っているのでReleaseビルャhのC++ライブラリとDebugのものは組み合わせられないし、
かといって常に最適化オンだとデバッグが不便です。
何かいい方法はありませんか?お願いします
2017/05/06(土) 13:56:44.08ID:f2NDPPRD
それだけじゃ何がしたいかさっぱり分からんけど
Compositeパターンでぐぐって出てくる奴とか参考にならんかね
Compositeパターンでぐぐって出てくる奴とか参考にならんかね
2017/05/06(土) 14:11:14.45ID:yLSgVzXR
スタックオーバーフロー?データ構造の問題じゃないと思われ
問題再現できるコードを上げるでもしないと誰も答えられないよ
問題再現できるコードを上げるでもしないと誰も答えられないよ
100デフォルトの名無しさん
2017/05/06(土) 15:30:45.88ID:DLhZv41T >>97
一般的には木構造で問題ない
ただ自分で実装する時に単純にノードの処理関数を子ノードに対して再帰的に呼び出す実装にしていると
階層が深くなったときはコールスタック不足でスタックオーバーフローになるので
ループで処理するとかの実装にしておく必要がある
一般的には木構造で問題ない
ただ自分で実装する時に単純にノードの処理関数を子ノードに対して再帰的に呼び出す実装にしていると
階層が深くなったときはコールスタック不足でスタックオーバーフローになるので
ループで処理するとかの実装にしておく必要がある
木構造のループですか‥やってできないことはないだろうけれどもめんどくさいね goto の連発だね
10297
2017/05/06(土) 16:02:38.76ID:3nLTZXlU 遅くなったけどideone用に書き換えたコードがこれです
http://ideone.com/nJqdHZ
やりたいことは単に階層構造のテキストデータを読み取って、置換したり変形することです。
Visual StudioでDebugビルドしたものを実行すると、id: 248 とか表示されるあたりでスタックオーバーフローが起きて停止します。
ちょっと調べたところだと再帰→ループへの展開は定番みたいですね。
そっちの方向で考えてみたいと思います。どうもありがとうございます。
(…でも、250程度の数の階層くらい頭を使わずに書いたコードでも動いてくれという気がスル)
http://ideone.com/nJqdHZ
やりたいことは単に階層構造のテキストデータを読み取って、置換したり変形することです。
Visual StudioでDebugビルドしたものを実行すると、id: 248 とか表示されるあたりでスタックオーバーフローが起きて停止します。
ちょっと調べたところだと再帰→ループへの展開は定番みたいですね。
そっちの方向で考えてみたいと思います。どうもありがとうございます。
(…でも、250程度の数の階層くらい頭を使わずに書いたコードでも動いてくれという気がスル)
103デフォルトの名無しさん
2017/05/07(日) 09:09:11.08ID:w48Ptm+H104デフォルトの名無しさん
2017/05/07(日) 10:23:46.07ID:czCtMb/5 >>102のコードってどこで再帰処理してるの?
105デフォルトの名無しさん
2017/05/07(日) 10:34:34.49ID:w48Ptm+H >>104
Dataのデストラクタ実行後に(暗黙的に)実行されるsubitemsの解放処理
Dataのデストラクタ実行後に(暗黙的に)実行されるsubitemsの解放処理
106デフォルトの名無しさん
2017/05/07(日) 10:58:59.52ID:czCtMb/5107デフォルトの名無しさん
2017/05/09(火) 04:51:17.39ID:CfLPAbNS C.C++で初めて作ったのってみんな何?
108デフォルトの名無しさん
2017/05/09(火) 05:45:43.95ID:A9/kHnP9 Hello world
109デフォルトの名無しさん
2017/05/09(火) 13:14:48.03ID:ZO11Ha1i110デフォルトの名無しさん
2017/05/11(木) 17:34:15.21ID:9hjkljzx ああ、独り言だしスレ違いだからスルーして。でも、どうしても言いたいし、雑談スレもないから
ここに書かせて。。
俺はC/C++が大好きなんだけど、GtkとかQtとか大好きなんだけど、Pythonが両方バインドしてるから
使ってみたんだけど、import文がある言語(Java、D言語、Python)って脳の向きと逆向きに設計されてね?
すげえ、違和感あって、使ってるとキモくなってくる。その点、include文はいいわ・・。大好き。
ここに書かせて。。
俺はC/C++が大好きなんだけど、GtkとかQtとか大好きなんだけど、Pythonが両方バインドしてるから
使ってみたんだけど、import文がある言語(Java、D言語、Python)って脳の向きと逆向きに設計されてね?
すげえ、違和感あって、使ってるとキモくなってくる。その点、include文はいいわ・・。大好き。
111デフォルトの名無しさん
2017/05/11(木) 19:24:16.98ID:BuwAxFWP JavaとCがそれほど違うようには感じられないけど
112デフォルトの名無しさん
2017/05/11(木) 19:46:38.79ID:9hjkljzx クラスの構造とかどうしても合わんわ。。あと、普通に文書いてても違和感感じるw
113デフォルトの名無しさん
2017/05/11(木) 20:44:47.50ID:r6M771XX114デフォルトの名無しさん
2017/05/11(木) 22:53:38.75ID:LJGZTDJk ファイル名に制約がかかる言語なかったっけ?
Java?
Java?
115デフォルトの名無しさん
2017/05/11(木) 23:24:48.41ID:1a/5L+8A javaは知らないがCは制約ある
正確にはファイル名じゃなくてincludeで指定する文字列だけど
正確にはファイル名じゃなくてincludeで指定する文字列だけど
116デフォルトの名無しさん
2017/05/12(金) 07:20:43.83ID:yoAOukLs Cのexport文と一対一になってないというだけの話じゃね
117デフォルトの名無しさん
2017/05/12(金) 07:25:29.38ID:r7FlYbQi C#のusingも同じなのかな
やっぱいまいちわからん
やっぱいまいちわからん
118デフォルトの名無しさん
2017/05/12(金) 09:45:14.44ID:gCSxRRWi Cの制約って何だ?
vs2015だが、ファイル名全角スペースでもエラーでない
vs2015だが、ファイル名全角スペースでもエラーでない
119デフォルトの名無しさん
2017/05/12(金) 12:06:01.20ID:OCYL1E3A120デフォルトの名無しさん
2017/05/12(金) 13:40:23.46ID:FoBe9UZW C++から3年ほど遠ざかっていた俺に最近のC++の何か凄いテクニックを教えてくれ。
121デフォルトの名無しさん
2017/05/12(金) 13:51:20.92ID:YITQwMx2 c++1zで使えるようになるvariantとかどうかね
(記述の見掛け上という意味で)継承を使わず 多態を実現できる
現状はboostでお試し可能
(記述の見掛け上という意味で)継承を使わず 多態を実現できる
現状はboostでお試し可能
122デフォルトの名無しさん
2017/05/12(金) 16:47:43.02ID:FoBe9UZW123デフォルトの名無しさん
2017/05/12(金) 19:18:49.01ID:fokGnnSL >>118
vcがそう実装してるだけで、他の処理系も同じようにエラーがでない保証はない
最低限のラインは、8文字+「.」+1文字で英数字のみ、ただし先頭は英字のみ、大文字小文字を区別する保証なし
規格上、inludeの文字列とファイル名が一致するかも定かでないから、気にしても無駄だけど
vcがそう実装してるだけで、他の処理系も同じようにエラーがでない保証はない
最低限のラインは、8文字+「.」+1文字で英数字のみ、ただし先頭は英字のみ、大文字小文字を区別する保証なし
規格上、inludeの文字列とファイル名が一致するかも定かでないから、気にしても無駄だけど
124デフォルトの名無しさん
2017/05/12(金) 19:23:40.34ID:WYsaiAgn たぶんCに制約はないだろ
125デフォルトの名無しさん
2017/05/12(金) 20:53:24.64ID:37oyzgXT ファイル名に「<」や「>」とか含んでいると困るの
126デフォルトの名無しさん
2017/05/13(土) 07:23:06.14ID:bjLbBbns ファイル名に制約という提起で
まさかファイル名や#includeに使えない文字の話になるとは思ってなかった
まさかファイル名や#includeに使えない文字の話になるとは思ってなかった
127デフォルトの名無しさん
2017/05/13(土) 08:04:09.13ID:DnMUFoIp 2chだからな
128デフォルトの名無しさん
2017/05/14(日) 16:50:22.30ID:gwLsZ5pp あるアルゴリズムをメソッドとして実装したクラスがあって、
そのアルゴの中で20個くらいの定数を用いる。
そのアルゴリズムの亜種をサブクラスとして作りたいが、その亜種の中では定数の値を親クラスの値とは違う値にしたい。
こういう時、定数群はどうやって定義するのがいいでしょうか。
メンバ変数として全部const intで持っておいて、
コンストラクタの初期化の文法で各クラス固有の値を入れればいいでしょうか。
できれば外部ファイルにjasonとかで持たせられないかとも思ってもいますが、それだとコンストラクタ内のconst intの初期化より先には読み込めないですよね。
浅学で恐縮です。よろしくお願いします。
そのアルゴの中で20個くらいの定数を用いる。
そのアルゴリズムの亜種をサブクラスとして作りたいが、その亜種の中では定数の値を親クラスの値とは違う値にしたい。
こういう時、定数群はどうやって定義するのがいいでしょうか。
メンバ変数として全部const intで持っておいて、
コンストラクタの初期化の文法で各クラス固有の値を入れればいいでしょうか。
できれば外部ファイルにjasonとかで持たせられないかとも思ってもいますが、それだとコンストラクタ内のconst intの初期化より先には読み込めないですよね。
浅学で恐縮です。よろしくお願いします。
129デフォルトの名無しさん
2017/05/14(日) 16:59:28.84ID:C90eDFbL 亜種が定数が違うだけならコンストラクタでええんでない?
アルゴリズムも似てるだけで少し違うとかなら使えんかも知らんけど
アルゴリズムも似てるだけで少し違うとかなら使えんかも知らんけど
130デフォルトの名無しさん
2017/05/14(日) 17:42:51.46ID:abQtpPi4 >>128
定数ではなくメンバ変数でいいじゃないの?
外部から変更されたくないなら読み取りプロパティにすればよいし
亜種はサブクラスのインスタンス作成時にファイルを読み込むようにして
親クラスのメンバ変数を上書きするようにする。
定数ではなくメンバ変数でいいじゃないの?
外部から変更されたくないなら読み取りプロパティにすればよいし
亜種はサブクラスのインスタンス作成時にファイルを読み込むようにして
親クラスのメンバ変数を上書きするようにする。
131デフォルトの名無しさん
2017/05/19(金) 19:46:36.77ID:BDF1+v1a コピーコンストラクタのところでエラーがでます。
>オブジェクトにメンバー 関数 "A::getFileName" と互換性のない型修飾子があります
>C2662 'const std::string &A::getFileName(void)': 'const A' から 'A &' へ 'this' ポインターを変換できません。
どう直せばいいのですか?
class A {
public:
A() {}
A(const A &a) {
this->setFileName(a.getFileName()); //ここでエラー
}
void setFileName(const std::string& fn) {
this->m_fileName = fn;
}
const std::string& getFileName() {
return this->m_fileName;
}
private:
std::string m_fileName;
};
>オブジェクトにメンバー 関数 "A::getFileName" と互換性のない型修飾子があります
>C2662 'const std::string &A::getFileName(void)': 'const A' から 'A &' へ 'this' ポインターを変換できません。
どう直せばいいのですか?
class A {
public:
A() {}
A(const A &a) {
this->setFileName(a.getFileName()); //ここでエラー
}
void setFileName(const std::string& fn) {
this->m_fileName = fn;
}
const std::string& getFileName() {
return this->m_fileName;
}
private:
std::string m_fileName;
};
132デフォルトの名無しさん
2017/05/19(金) 20:33:23.63ID:iLAnMNZa linux mint18 32bit
python3をF5で実行できるエディターは無いでしょうか?
Geany 1.27ではpython2.7なので、python3.5を使用したいと思ってます
PC自体にはpytho3.5と2.7が入ってます
python3をF5で実行できるエディターは無いでしょうか?
Geany 1.27ではpython2.7なので、python3.5を使用したいと思ってます
PC自体にはpytho3.5と2.7が入ってます
133デフォルトの名無しさん
2017/05/19(金) 20:34:44.55ID:iLAnMNZa 間違えました
134デフォルトの名無しさん
2017/05/19(金) 21:14:19.37ID:gHk1Pzkh135デフォルトの名無しさん
2017/05/19(金) 22:24:40.24ID:BDF1+v1a136デフォルトの名無しさん
2017/05/25(木) 22:25:27.96ID:QzzPv//a クラスのメンバ関数のポインタはすべてのインスタンスに共通で
例えばvectorに自作クラスを入れといてあとから要素の挿入・削除をして
インスタンスのメモリ上の位置が変わっても関数のポインタは変わらない
って理解であってますか?
例えばvectorに自作クラスを入れといてあとから要素の挿入・削除をして
インスタンスのメモリ上の位置が変わっても関数のポインタは変わらない
って理解であってますか?
137デフォルトの名無しさん
2017/05/25(木) 23:22:02.15ID:WUcUkfwI はい
関数の配置アドレスが実行時に変わるなんてことは起きないので
ちなみに同じインスタンスなのにメモリ上の位置が変わるなんてこともないと思うが
関数の配置アドレスが実行時に変わるなんてことは起きないので
ちなみに同じインスタンスなのにメモリ上の位置が変わるなんてこともないと思うが
138デフォルトの名無しさん
2017/05/28(日) 16:14:14.69ID:yvANlV24 Eigenに
operator*
でなくて逆向きかけ算の関数rdotを追加したい
つまり
some_object * eigen_matrix
するために
Eigen::EigenBase<Derived>::rdot
を追加して
eigen_matrix.rdot(some_object);
で計算できるようにしたい
しかし
no member function declared in class
というエラーになる
どうやったら後付けでmember function追加できるんだ?
Eigenの中はいじりたくない
operator*
でなくて逆向きかけ算の関数rdotを追加したい
つまり
some_object * eigen_matrix
するために
Eigen::EigenBase<Derived>::rdot
を追加して
eigen_matrix.rdot(some_object);
で計算できるようにしたい
しかし
no member function declared in class
というエラーになる
どうやったら後付けでmember function追加できるんだ?
Eigenの中はいじりたくない
139デフォルトの名無しさん
2017/05/28(日) 21:29:06.26ID:p7YrRaRu 元のクラス定義を変更せずにクラスにメンバ関数を追加することはできない
140デフォルトの名無しさん
2017/05/28(日) 23:55:15.37ID:T1SZ8kqz 継承したらダメなんか?
141デフォルトの名無しさん
2017/06/01(木) 07:42:47.62ID:SDX804Eo Eigen3の実装みてるんだけど
class Matrix{
operator * const ...
}
でほとんどの関数がconstで統一されてるのに
transposeだけconstついたのと,ついてないの2つあるのは何故?
class Matrix{
operator * const ...
}
でほとんどの関数がconstで統一されてるのに
transposeだけconstついたのと,ついてないの2つあるのは何故?
142デフォルトの名無しさん
2017/06/01(木) 10:34:56.04ID:tub0QHg4 そのほうが便利だ(と作者が思った)からだろう
const版
返されたtransposeはconstで変更不能
非const版
返されたtransposeは変更可能
変更すると間接的に元のmatrixも変更される
const版
返されたtransposeはconstで変更不能
非const版
返されたtransposeは変更可能
変更すると間接的に元のmatrixも変更される
143デフォルトの名無しさん
2017/06/02(金) 21:10:48.66ID:hdQ1KfrD プログラミング言語C++第4版の本を今頑張って読んでいます。
その中で、サンプルコードは著者のサイトでとURLが乗っているのですが、
これがトップページのURLしか書いてなくてどこからダウンロードできるかわからない状態です。
いろいろ調べたら、グーグルコードのサイトに飛ぶ場所を見かけたのでDLできるかと思いましたが、
グーグルコードは去年の一月には廃止されていて、ダウンロードができない状態です。
ほかにサンプルコードダウンロードできるような場所はあるのでしょうか。
色々と探しても同じような人は見当たりませんし、困っています。
どなたかご存知の方いらっしゃらないでしょうか。
その中で、サンプルコードは著者のサイトでとURLが乗っているのですが、
これがトップページのURLしか書いてなくてどこからダウンロードできるかわからない状態です。
いろいろ調べたら、グーグルコードのサイトに飛ぶ場所を見かけたのでDLできるかと思いましたが、
グーグルコードは去年の一月には廃止されていて、ダウンロードができない状態です。
ほかにサンプルコードダウンロードできるような場所はあるのでしょうか。
色々と探しても同じような人は見当たりませんし、困っています。
どなたかご存知の方いらっしゃらないでしょうか。
144デフォルトの名無しさん
2017/06/02(金) 22:06:31.65ID:uqHV+hQL 本持ってないけどこのページ上のリンクからダウンロードできるやつではないの?
https://code.google.com/archive/p/origin/source/default/source?page=1
https://code.google.com/archive/p/origin/source/default/source?page=1
145デフォルトの名無しさん
2017/06/03(土) 13:03:58.47ID:7x/augC4 >>144さん
返信ありがとうございます。
ダウンロードばかり気にしていたのかソースというところに気が付きませんでした。お恥ずかしい。
普通にダウンロードできまして、ソースも確認できました。
testingのソースコードが本に書いてあるコードと大体同じように書かれてたのでこれだと思います。
ただ、入門書ってわけじゃないからなのか、洋書だからなのかわかりませんが、
本で書かれているコードだいぶ端折っているなっていう感じなので、正確にこのサンプルで問題ないのかがわからないです。
返信ありがとうございます。
ダウンロードばかり気にしていたのかソースというところに気が付きませんでした。お恥ずかしい。
普通にダウンロードできまして、ソースも確認できました。
testingのソースコードが本に書いてあるコードと大体同じように書かれてたのでこれだと思います。
ただ、入門書ってわけじゃないからなのか、洋書だからなのかわかりませんが、
本で書かれているコードだいぶ端折っているなっていう感じなので、正確にこのサンプルで問題ないのかがわからないです。
146デフォルトの名無しさん
2017/06/03(土) 13:12:54.00ID:7x/augC4 143,145です。
すいません。145はなんか途中で書き込みをしてしまいました。
話を戻しまして、
でも、問題ないかがわからないのは、本もまだほとんど読めてないのと、C++も入門書を一回軽く読んだ程度の知識しかないので、わからないだけだと思いますので
本(サンプルも)を参考に自分でソースコードを記述していきたいと思います。
>>144さんのおかげで、ソースも手に入り、教えてもらったことで、モチベーションもあがりました(^^♪)
次に進めそうです。本当にありがとうございました。
すいません。145はなんか途中で書き込みをしてしまいました。
話を戻しまして、
でも、問題ないかがわからないのは、本もまだほとんど読めてないのと、C++も入門書を一回軽く読んだ程度の知識しかないので、わからないだけだと思いますので
本(サンプルも)を参考に自分でソースコードを記述していきたいと思います。
>>144さんのおかげで、ソースも手に入り、教えてもらったことで、モチベーションもあがりました(^^♪)
次に進めそうです。本当にありがとうございました。
147デフォルトの名無しさん
2017/06/09(金) 00:20:22.42ID:8CSNtvHv 他の言語結構熟練してたらべつだけど、
cプラにほとんど慣れてない状態で
この本を読んでも効率わるいだけとおもうがねぇ。
cプラにほとんど慣れてない状態で
この本を読んでも効率わるいだけとおもうがねぇ。
148デフォルトの名無しさん
2017/06/09(金) 00:30:02.53ID:8GQEdlWI 勉強してる気になれるからいいんだよ
149デフォルトの名無しさん
2017/07/01(土) 12:35:47.56ID:ID6W3bit スタティーック!
150デフォルトの名無しさん
2017/08/08(火) 00:05:19.81ID:O9M7bV7S C言語の関数ポインタというものは関数ポインタとして作られたのか通常のポインタの改良なのかどちらなのでしょうか?
関数ポインタの引数の仕組みがよく分からなかったので質問してみました
よろしくお願いします
関数ポインタの引数の仕組みがよく分からなかったので質問してみました
よろしくお願いします
151デフォルトの名無しさん
2017/08/08(火) 00:42:15.53ID:m8GLf68F 言ってる意味が良くわからないが
ポインタの性質は「型」で決まる
あるデータをどのように見なすか
それだけ
32bitだか64bitだかのデータを、文法上どう見なすかってだけ
関数ポインタの場合は関数のエントリーポイントと見なす
引数の数や種類や呼び出し方などは、型が知っている
型に基づいて呼び出すだけ
ポインタの性質は「型」で決まる
あるデータをどのように見なすか
それだけ
32bitだか64bitだかのデータを、文法上どう見なすかってだけ
関数ポインタの場合は関数のエントリーポイントと見なす
引数の数や種類や呼び出し方などは、型が知っている
型に基づいて呼び出すだけ
152デフォルトの名無しさん
2017/08/08(火) 02:23:09.82ID:SgAIOr6T >>150
極論言えば、配列のポインタも関数のポインタもただのポインタ。
対象が配列だから配列的にも振る舞える。
関数だから関数的にも振る舞える。
ただそれだけやね。
型は配列的とか関数的とかに振る舞う時のルール引数得るのに何回スタックからpushするかとかを教えるヒントにすぎない。
この辺はアセンブラ知ってると理解しやすいかもね。
極論言えば、配列のポインタも関数のポインタもただのポインタ。
対象が配列だから配列的にも振る舞える。
関数だから関数的にも振る舞える。
ただそれだけやね。
型は配列的とか関数的とかに振る舞う時のルール引数得るのに何回スタックからpushするかとかを教えるヒントにすぎない。
この辺はアセンブラ知ってると理解しやすいかもね。
153デフォルトの名無しさん
2017/08/08(火) 02:24:25.91ID:SgAIOr6T あ、スタック「から」だとpopやった。。。
154デフォルトの名無しさん
2017/08/08(火) 22:52:38.23ID:O9M7bV7S 変数のポインタはint *i;でアドレスだけを保持していて
関数ポインタはint (*func)(int i);でアドレスと引数リストを保持しているように思えます
引数が必要なのは分かりますが(int i)を勝手に付け足しても良いものなのかなと思いまして
関数ポインタはint (*func)(int i);でアドレスと引数リストを保持しているように思えます
引数が必要なのは分かりますが(int i)を勝手に付け足しても良いものなのかなと思いまして
155デフォルトの名無しさん
2017/08/08(火) 23:34:37.02ID:fmd6E2St156デフォルトの名無しさん
2017/08/08(火) 23:44:08.72ID:nf4ZHvzc >>154
何したくて何ききたいのかさっぱりだな
アドレスだけ見せられても、それが変数のアドレスなのか、関数のアドレスなのか、変数なら型は何なのか、関数なら引数あるのかないのか、あるならその型は・・・
アドレスだけじゃ解決できないよ
何したくて何ききたいのかさっぱりだな
アドレスだけ見せられても、それが変数のアドレスなのか、関数のアドレスなのか、変数なら型は何なのか、関数なら引数あるのかないのか、あるならその型は・・・
アドレスだけじゃ解決できないよ
157デフォルトの名無しさん
2017/08/08(火) 23:55:54.36ID:rlbWG25h158デフォルトの名無しさん
2017/08/09(水) 00:47:51.09ID:hEgnFYnk int *p;が逆参照したときにintとして扱えるように
int (*p)[10];が逆参照したときに配列として扱えるように
(君の言い分だと↑も[10]を勝手に付け足しているように見えるのかもしれないが)
型というものがあって、コンパイラは型を知っているから正しくアクセスできる
同じように
void (*p)(int i);としたとき、pはintを引数に取る関数のポインタという「型」になるから
その型をもってしてコンパイラは関数を呼び出せる
そう考えれば(int i)が付くのも当たり前、それが必要だからそういう文法になっている
「アクセスするときに必要となる情報を型として与えているのだよ」
特にCの場合は「そう見なしてくれ」という意味合いが強い
キャストして型を変えれば割とどうとでもなる面白い言語
単なるメモリブロックを配列や構造体と見なしてアクセスしたり
こういうことが出来る言語はあまりないので
低レベルでは未だにC系の言語が重宝されている
int (*p)[10];が逆参照したときに配列として扱えるように
(君の言い分だと↑も[10]を勝手に付け足しているように見えるのかもしれないが)
型というものがあって、コンパイラは型を知っているから正しくアクセスできる
同じように
void (*p)(int i);としたとき、pはintを引数に取る関数のポインタという「型」になるから
その型をもってしてコンパイラは関数を呼び出せる
そう考えれば(int i)が付くのも当たり前、それが必要だからそういう文法になっている
「アクセスするときに必要となる情報を型として与えているのだよ」
特にCの場合は「そう見なしてくれ」という意味合いが強い
キャストして型を変えれば割とどうとでもなる面白い言語
単なるメモリブロックを配列や構造体と見なしてアクセスしたり
こういうことが出来る言語はあまりないので
低レベルでは未だにC系の言語が重宝されている
159デフォルトの名無しさん
2017/08/09(水) 00:52:32.88ID:hEgnFYnk ちなみに
>>157は間違ってるから気にしなくてよいよ
C言語は静的型だから「実際に行かなくても先にあるものが分かる」
というか、先に何があろうが、「型」の示すものがあるものとして扱う
だから、病院の型のポインタに君の家のアドレスを入れたら
君の家に病人が殺到してバグる
キャストしなければそういう代入は出来ないようになっているがな
>>157は間違ってるから気にしなくてよいよ
C言語は静的型だから「実際に行かなくても先にあるものが分かる」
というか、先に何があろうが、「型」の示すものがあるものとして扱う
だから、病院の型のポインタに君の家のアドレスを入れたら
君の家に病人が殺到してバグる
キャストしなければそういう代入は出来ないようになっているがな
160デフォルトの名無しさん
2017/08/09(水) 01:02:42.02ID:hEgnFYnk 逆に、C言語は静的型だから、「実際に行ってみても、それが何であるか分からない」
住所に行ってみても、名札も無ければ看板も無いので、それが何なのか分からない
そういった情報は全部メタ的に「型」にしかない
そして型はコンパイル時のコンパイラしか知らない
コンパイル後のコードには型情報は綺麗さっぱり消えてなくなってる
C言語はデータになんであるかを示す型情報が無い
実行時にデータから型を取得することはできない
なんで、関数ポインタの型にはそれを通して関数を呼び出せるだけの情報が必要
そういうことが出来る文法になってる
住所に行ってみても、名札も無ければ看板も無いので、それが何なのか分からない
そういった情報は全部メタ的に「型」にしかない
そして型はコンパイル時のコンパイラしか知らない
コンパイル後のコードには型情報は綺麗さっぱり消えてなくなってる
C言語はデータになんであるかを示す型情報が無い
実行時にデータから型を取得することはできない
なんで、関数ポインタの型にはそれを通して関数を呼び出せるだけの情報が必要
そういうことが出来る文法になってる
161デフォルトの名無しさん
2017/08/09(水) 01:04:32.68ID:hEgnFYnk >そして型はコンパイル時のコンパイラしか知らない
あとプログラマとね
あとプログラマとね
162デフォルトの名無しさん
2017/08/09(水) 01:31:24.27ID:6o6it4hw ありがとうございます
質問が分かりづらかったようですみませんでした
intとして扱えるポインタの型や配列として扱えるポインタの型、関数として扱えるポインタの型と言うようにポインタにも幾つかの型があるんですね
ようやく皆さんの言っていることが分かりました
他にもどんな型があるのか知りたいのですが、こういったことはどこに書いてあるのでしょうか?
質問が分かりづらかったようですみませんでした
intとして扱えるポインタの型や配列として扱えるポインタの型、関数として扱えるポインタの型と言うようにポインタにも幾つかの型があるんですね
ようやく皆さんの言っていることが分かりました
他にもどんな型があるのか知りたいのですが、こういったことはどこに書いてあるのでしょうか?
163デフォルトの名無しさん
2017/08/09(水) 10:28:38.52ID:RdtvDY+vレスを投稿する
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★9 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 ★2 [ぐれ★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- 【高市核兵器】 小泉コメ防衛大臣「民主党政権 岡田外務大臣の “非核三原則” に関する国会答弁を引き継いでいる」 政策堅持を明言 [485983549]
- 【高市賃上げ】 自民党&維新の会「国会議員の給与を 月5万円アップさせる!」 今国会で歳費法改正。 月129万円→月134万円に [485983549]
- Apple Arcade凄い。ゲーム遊び放題。言うなればゲームの食べ放題。サブスク
- 犯罪者たち「刑事罰受けて罪は償った!被害者への賠償金?もう反省済みだから一円も払わねーよばーかwww」 [177178129]
- ㊗157円 [194819832]
- 【高市会談】 長年、日本初の女性首相を目指し争った 百合子と早苗「国と都の補正予算で連携するわよ!」 首相官邸で初会談 [485983549]
