エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります
コードを貼れる所
http://codepad.org/
https://ideone.com/
前スレ
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
探検
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
レス数が950を超えています。1000を超えると書き込みができなくなります。
2018/07/01(日) 03:44:53.53ID:4MMF8cDN
892デフォルトの名無しさん
2018/11/22(木) 00:06:21.53ID:LhS8U5R1 今はmoveがあるからとりあえずコピー禁止で作るな。
複製したオブジェクトが必要になる機会はあんまりない気がする。
vectorに突っ込んで連続したメモリに割り当てたいときとかかな。
複製したオブジェクトが必要になる機会はあんまりない気がする。
vectorに突っ込んで連続したメモリに割り当てたいときとかかな。
893デフォルトの名無しさん
2018/11/22(木) 00:16:19.69ID:hDud6tbH >>892
read-copy-updateとか、マルチスレッディングで使うんですよ。
(スレッド間で同じ領域にアクセスすると、誰かが書き込むときにロックが掛かるから、
ポインタの参照先もコピーしてしまった方が良い)
read-copy-updateとか、マルチスレッディングで使うんですよ。
(スレッド間で同じ領域にアクセスすると、誰かが書き込むときにロックが掛かるから、
ポインタの参照先もコピーしてしまった方が良い)
894デフォルトの名無しさん
2018/11/22(木) 00:23:03.19ID:VnO3ZoaR pimpl は、DI(dependency injection)でも使うか
895デフォルトの名無しさん
2018/11/22(木) 00:35:05.56ID:hDud6tbH896デフォルトの名無しさん
2018/11/23(金) 18:17:04.79ID:Fjl6cL2Z でかいオブジェクトはコピーじゃなくてデータベースに入れてリビジョン管理するべきだよな
897デフォルトの名無しさん
2018/11/24(土) 04:02:28.06ID:sj/p1kLr std::shared_ptr。
898デフォルトの名無しさん
2018/11/24(土) 13:15:24.82ID:CDKSSVF4 >>891
コピーコンストラクタって言語機能があるから勘違いしがちだけど
コピーってオブジェクト指向一般的に言えば全くもって汎用的な処理じゃないんだよね
むしろ無理にコピー可を要求するとおかしくなったりパフォーマンスに悪影響することの方が多いぐらいだ
だから、C++より進化したオブジェクト指向言語、例えばC#もJavaもコピーコンストラクタなんてサポートしてないだろ?
なんでまあ、基本的にはコピーはサポートしなくていい
そのクラスの要件としてコピーのサポートが必須だとはっきり分かったときだけサポートすりゃいい
コピーコンストラクタって言語機能があるから勘違いしがちだけど
コピーってオブジェクト指向一般的に言えば全くもって汎用的な処理じゃないんだよね
むしろ無理にコピー可を要求するとおかしくなったりパフォーマンスに悪影響することの方が多いぐらいだ
だから、C++より進化したオブジェクト指向言語、例えばC#もJavaもコピーコンストラクタなんてサポートしてないだろ?
なんでまあ、基本的にはコピーはサポートしなくていい
そのクラスの要件としてコピーのサポートが必須だとはっきり分かったときだけサポートすりゃいい
900デフォルトの名無しさん
2018/11/24(土) 15:11:34.85ID:CDKSSVF4 C#には構造体があるがそれもコピーコンストラクタなどサポートしてないね
オブジェクト指向にはほとんど不要だから
オブジェクト指向にはほとんど不要だから
901デフォルトの名無しさん
2018/11/24(土) 15:48:36.96ID:3CbvFbkZ IClonableが用意されているのはそれが必要だと判断されたからだわな
902デフォルトの名無しさん
2018/11/24(土) 19:04:04.80ID:gWlvrrPg >>897
循環参照や並行処理や、今や制限しか思い浮かばない……
循環参照や並行処理や、今や制限しか思い浮かばない……
903デフォルトの名無しさん
2018/11/25(日) 09:06:53.31ID:lehzCciN コピーコンストラクタなんて使ったことないよ
関数の引数も構造体はポインタで渡すべきだし、関数からの返り値も構造体で返すべきではない
あんなのは使うべきではない
関数の引数も構造体はポインタで渡すべきだし、関数からの返り値も構造体で返すべきではない
あんなのは使うべきではない
904デフォルトの名無しさん
2018/11/25(日) 09:07:39.68ID:lehzCciN =はもちろん実装するけどね
905デフォルトの名無しさん
2018/11/25(日) 18:17:50.26ID:nhPKo8Z8 便利なのに:-P
906デフォルトの名無しさん
2018/11/26(月) 03:48:18.53ID:bwBfDzyf あるクラスのオブジェクトを静的/動的に確保した場合の互いのメンバ関数処理速度の差ってどれくらいなもんですかね
処理の規模にもよるのですか?
処理の規模にもよるのですか?
907デフォルトの名無しさん
2018/11/26(月) 06:54:42.96ID:KQ12hvHn ほぼ無いと思って良い。
908デフォルトの名無しさん
2018/11/27(火) 09:16:27.15ID:SZiCwtOh 今プログラミング言語C++4第四版読んでるのですが、中級者なのですが1ページから読んでます
テンプレートはあまり使ったことがなく、テンプレートの章を読んでいるのですが理解出来ているのか出来ていないのか分かりません
皆さんこの本はどんな感じで読みましたか?
テンプレートはあまり使ったことがなく、テンプレートの章を読んでいるのですが理解出来ているのか出来ていないのか分かりません
皆さんこの本はどんな感じで読みましたか?
909デフォルトの名無しさん
2018/11/27(火) 09:40:16.02ID:jIxWA8zR テンプレートは大分前に読んだが、ぜんぜんスマートだとは思わんかったしプログラムもでかくなりそうだったし
くだらねえと思って、読むのやめたよ。 別に使わなくてもプログラム出来るしな
くだらねえと思って、読むのやめたよ。 別に使わなくてもプログラム出来るしな
910デフォルトの名無しさん
2018/11/27(火) 10:30:40.71ID:90f/RKlc ID:lehzCciN
ID:jIxWA8zR
ちょっとだまってて
ID:jIxWA8zR
ちょっとだまってて
911デフォルトの名無しさん
2018/11/27(火) 17:54:30.60ID:7Rl1V70s テンプレートは書くのはちょっと難しいというかアレだが
使うのは簡単だから、まずstd::vectorとか使ってみれば?便利だから
使い方が分かれば作り方もわかるようになるだろう
あとコピーの話でもめてたようだが、オブジェクトのコピーはC++の特徴だからなぁ
C言語からのもので、構造体が値型と同じようにコピーできるっていう
そのおかげでスタックにオブジェクトを確保してRAIIが出来るまぁこれも特徴的だわ
一方で配列が=でコピーできないのもC言語からのもので
構造体より配列の方が他の言語で言うところのオブジェクトと似たような仕様になってるw
参照するとポインタに格下げになるのもJavaやC#のオブジェクトと一緒だね
使うのは簡単だから、まずstd::vectorとか使ってみれば?便利だから
使い方が分かれば作り方もわかるようになるだろう
あとコピーの話でもめてたようだが、オブジェクトのコピーはC++の特徴だからなぁ
C言語からのもので、構造体が値型と同じようにコピーできるっていう
そのおかげでスタックにオブジェクトを確保してRAIIが出来るまぁこれも特徴的だわ
一方で配列が=でコピーできないのもC言語からのもので
構造体より配列の方が他の言語で言うところのオブジェクトと似たような仕様になってるw
参照するとポインタに格下げになるのもJavaやC#のオブジェクトと一緒だね
912デフォルトの名無しさん
2018/11/27(火) 18:01:09.09ID:7Rl1V70s もしC言語の構造体が配列の仕様と同じように
アクセスしようとするとポインタに格下げになってコピーできない仕様だったのなら
C++のクラスはもうちょっとモダンな仕様になってたかもしれないよね
値渡し出来ないからコピーの事を考えなくてもよいし
GCないからキツイか
アクセスしようとするとポインタに格下げになってコピーできない仕様だったのなら
C++のクラスはもうちょっとモダンな仕様になってたかもしれないよね
値渡し出来ないからコピーの事を考えなくてもよいし
GCないからキツイか
913デフォルトの名無しさん
2018/11/27(火) 19:03:17.02ID:NSs5prW8914デフォルトの名無しさん
2018/11/27(火) 19:33:57.58ID:7Rl1V70s その場合でも、例えばC言語のコンパイラを作りたいとき
C言語の使い方を理解せずにC言語のコンパイラを作るより
C言語の使い方を学習してからC言語のコンパイラを作る方が
賢明だろ
C言語の使い方を理解せずにC言語のコンパイラを作るより
C言語の使い方を学習してからC言語のコンパイラを作る方が
賢明だろ
>>906
性的・童貞的の差異よりも仮性・真性の差異を問題にすべきかと
性的・童貞的の差異よりも仮性・真性の差異を問題にすべきかと
>>909
lisp のマクロとC++のテンプレートとは、どっちの方がイケてますか?
lisp のマクロとC++のテンプレートとは、どっちの方がイケてますか?
918デフォルトの名無しさん
2018/11/27(火) 20:20:00.53ID:8XUiQDZN テンプレートはヘッダと分けて書けないのが嫌い
919さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/27(火) 20:25:04.10ID:Caq1Rx+X >>917
もしそうなら、配列のサイズの情報が関数プロトタイプに付属していただろう。
もしそうなら、配列のサイズの情報が関数プロトタイプに付属していただろう。
921デフォルトの名無しさん
2018/11/27(火) 21:06:28.32ID:iQ+6kMZ3 >>917
文字列が使えますよ
文字列が使えますよ
922デフォルトの名無しさん
2018/11/27(火) 22:10:55.41ID:F5dyxMID923デフォルトの名無しさん
2018/11/28(水) 14:52:38.77ID:SOoAorbX924デフォルトの名無しさん
2018/11/28(水) 23:40:54.22ID:eIhtGkxx #include <stdi.h>
int main(void)
{
int i, j;
for (i = 1; i <= 9; i++) {
for (j = 1; j <= 9; j++) {
printf(" %2d", i * j);
}
printf("\n");
}
return 0;
}
あるサイトを参考に
簡単な九九の表を作ると
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15...
...
...
(略)
このようになると思いますが、
隣の数字を参照にして足して
3 5 7 9 11 13 15 17
6 10 14 18 22 26 30 34
9 15 21 27 33...
...
...
(略)
と、表示するには上記のサイトの様なプログラムをどのようにすれば良いのでしょうか?
宜しくお願いします。
int main(void)
{
int i, j;
for (i = 1; i <= 9; i++) {
for (j = 1; j <= 9; j++) {
printf(" %2d", i * j);
}
printf("\n");
}
return 0;
}
あるサイトを参考に
簡単な九九の表を作ると
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15...
...
...
(略)
このようになると思いますが、
隣の数字を参照にして足して
3 5 7 9 11 13 15 17
6 10 14 18 22 26 30 34
9 15 21 27 33...
...
...
(略)
と、表示するには上記のサイトの様なプログラムをどのようにすれば良いのでしょうか?
宜しくお願いします。
925デフォルトの名無しさん
2018/11/29(木) 00:08:56.51ID:ByGYlBID 隣の数字を参照にして足すとは?
926デフォルトの名無しさん
2018/11/29(木) 00:21:59.55ID:kX/wXhND >>924
別スレにも書き込んでたけどそっちでは相手にされてなかったね。
上記サイトと書いておいて、そのサイトが抜け落ちてるよ。コピペしたなら推敲もしような。
やりたいことは i*j+i*(j+1)を出力するということか?
別スレにも書き込んでたけどそっちでは相手にされてなかったね。
上記サイトと書いておいて、そのサイトが抜け落ちてるよ。コピペしたなら推敲もしような。
やりたいことは i*j+i*(j+1)を出力するということか?
927デフォルトの名無しさん
2018/11/29(木) 10:35:45.18ID:xLkFi/tB >>905
-P ってなんだ?
-P ってなんだ?
928デフォルトの名無しさん
2018/11/29(木) 10:59:03.08ID:ESdHXHbt :-) 等、海外の顔文字(横向きver)
:-P でワンセットよ
:-P でワンセットよ
929デフォルトの名無しさん
2018/11/29(木) 11:30:12.27ID:5YtXqlzI :-P
でひとつだよ。
頭を左に倒して無心になって見る。
でひとつだよ。
頭を左に倒して無心になって見る。
930デフォルトの名無しさん
2018/11/29(木) 12:30:00.84ID:nCsU0tg9 たまにIDが英語圏顔文字みたいになる事あるな
931デフォルトの名無しさん
2018/11/29(木) 12:32:34.75ID:f12HiZt9 この手の表現はネット検索でも探しにくいからなぁ。
検索ワードに含めることができない文字を使ってるかも知れんし。
Wikipedia で「顔文字」の「欧米型の顔文字」に例示されてるね。
P は大文字が普通なのか。小文字 p だと思ってたわ(てへぺろ)。
検索ワードに含めることができない文字を使ってるかも知れんし。
Wikipedia で「顔文字」の「欧米型の顔文字」に例示されてるね。
P は大文字が普通なのか。小文字 p だと思ってたわ(てへぺろ)。
932デフォルトの名無しさん
2018/11/29(木) 13:08:04.37ID:Xh84MqYw 顔文字の起源を知らない層が多くなってきたんだな
933デフォルトの名無しさん
2018/11/29(木) 14:47:03.14ID:xfZAdJ8f こないだTWITTERで orz の話題が流れてたわ。
「絵文字があるのにそういうので遊んでたんですね!」 → 「無かったんだよ (#^ω^)ピキピキ」
「絵文字があるのにそういうので遊んでたんですね!」 → 「無かったんだよ (#^ω^)ピキピキ」
934デフォルトの名無しさん
2018/11/29(木) 21:00:05.47ID:wegp6ebJ 全くの素人なんだがスタックサイズ以上の巨大なクラスをローカル変数として宣言したら即オバーフロー起こす?
935デフォルトの名無しさん
2018/11/29(木) 21:05:46.12ID:SUocVvLK まともなOSなら。
でもOSのない環境もあるし未定義。
でもOSのない環境もあるし未定義。
936デフォルトの名無しさん
2018/11/29(木) 21:10:05.86ID:wegp6ebJ 成程
937デフォルトの名無しさん
2018/11/30(金) 08:17:26.96ID:J8op9N/7 スタックサイズのオーバーフローって普通、いちいちサイズ確認しながらエラー判断じゃなくて、
割り込み処理でやってるんだろ
割り込み処理でやってるんだろ
938デフォルトの名無しさん
2018/11/30(金) 12:27:47.34ID:lE6q+nZQ 環境依存
個々の話をしたいなら
> そのような質問は必ず環境を書きましょう
個々の話をしたいなら
> そのような質問は必ず環境を書きましょう
939デフォルトの名無しさん
2018/11/30(金) 14:20:25.90ID:fQi4U1HQ 宣言しただけでアクセスもせず関数も呼ばないなら、
エラーにならないのがほとんどかもな。
エラーにならないのがほとんどかもな。
940はちみつ餃子 ◆8X2XSCHEME
2018/11/30(金) 17:07:30.48ID:R1lF+QB2 自動変数を宣言しただけで使わないなら
最適化で消えちゃうこともあるかもな。
最適化で消えちゃうこともあるかもな。
941デフォルトの名無しさん
2018/12/01(土) 21:44:40.50ID:FAoigf3s ああ、C++の標準ライブラリにLISPインタプリタが入らぬかのう……
942デフォルトの名無しさん
2018/12/01(土) 21:49:38.80ID:FAoigf3s TinySchemeのカスタムインタプリタ作った時、例外の扱いやら引数チェックやら面倒で面倒で。
どうせみんなやってるんだから、標準のAPIがあれば車輪の再発明をせずにすむのに。
どうせみんなやってるんだから、標準のAPIがあれば車輪の再発明をせずにすむのに。
943デフォルトの名無しさん
2018/12/01(土) 21:54:14.62ID:o8nGgYR0 #include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int main(void)
{
string str;
getline(cin, str);
//cin >> str;
transform(str.begin(), str.end(), str.begin(), toupper);
cout << str << endl;
return 0;
}
このコードの「getline(cin, str);」と「cin >> str;」と「cout <<」
の部分にエラーが出るのですが何が原因かわかりますか?
別個にstd::を付けてもだめでした。解かる方いましたらよろしくお願いします。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int main(void)
{
string str;
getline(cin, str);
//cin >> str;
transform(str.begin(), str.end(), str.begin(), toupper);
cout << str << endl;
return 0;
}
このコードの「getline(cin, str);」と「cin >> str;」と「cout <<」
の部分にエラーが出るのですが何が原因かわかりますか?
別個にstd::を付けてもだめでした。解かる方いましたらよろしくお願いします。
944はちみつ餃子 ◆8X2XSCHEME
2018/12/01(土) 21:54:23.84ID:OSJOUMnn GNU の公式なアプリケーション拡張用言語は Guile
945デフォルトの名無しさん
2018/12/01(土) 22:04:56.03ID:JxP9GMs8946はちみつ餃子 ◆8X2XSCHEME
2018/12/01(土) 22:08:39.24ID:OSJOUMnn >>943
toupper は <locale> にある関数テンプレートと、 <cctype> に普通の関数がある。
どれだかわかんなくて混乱している。
toupper を [](char ch){return std::toupper(ch);} という風にラムダ式でくるむのが一番楽な方法だと思う。
toupper は <locale> にある関数テンプレートと、 <cctype> に普通の関数がある。
どれだかわかんなくて混乱している。
toupper を [](char ch){return std::toupper(ch);} という風にラムダ式でくるむのが一番楽な方法だと思う。
947デフォルトの名無しさん
2018/12/01(土) 22:24:03.10ID:FAoigf3s > Guile
Cygwinの中じゃなきゃ動かないじゃないですかw
WindowsのGUIアプリのカスタマイズに入用だったんですよ。
Cygwinの中じゃなきゃ動かないじゃないですかw
WindowsのGUIアプリのカスタマイズに入用だったんですよ。
948はちみつ餃子 ◆8X2XSCHEME
2018/12/01(土) 22:59:29.94ID:OSJOUMnn >>947
Windows だけでいいなら、
言語処理系を組込んでしまうよりはインターフェイスを COM にしておいて
適当な (OLE オートメーションに対応した) 言語を使ってもらう方が簡単かも。
Windows だけでいいなら、
言語処理系を組込んでしまうよりはインターフェイスを COM にしておいて
適当な (OLE オートメーションに対応した) 言語を使ってもらう方が簡単かも。
949デフォルトの名無しさん
2018/12/01(土) 23:02:01.99ID:o8nGgYR0950デフォルトの名無しさん
2018/12/02(日) 00:28:38.87ID:D1PcOCmT951はちみつ餃子 ◆8X2XSCHEME
2018/12/02(日) 01:23:40.96ID:AEdnuZu9 Windows なら WSH がすごく良い仕組みなので、
その枠組みをぜひ活用して欲しいと思ってる。
その枠組みをぜひ活用して欲しいと思ってる。
952デフォルトの名無しさん
2018/12/02(日) 15:34:26.54ID:6M/RvafZ >>933
時代を感じるな:-|
時代を感じるな:-|
953デフォルトの名無しさん
2018/12/02(日) 16:20:56.00ID:qwr+Mk5T 今は日本語や漢字にとどまらず、Unicodeで許されるあらゆる言語の文字を使ってるから、表現性はとても豊か(何がだ)
954デフォルトの名無しさん
2018/12/02(日) 16:34:18.61ID:FIqRJPSc [](){}と括弧揃い踏みなところがラムダ式の素晴らしいところ
キャプチャの必要性が分かるまで15時間も掛かった
キャプチャの必要性が分かるまで15時間も掛かった
955デフォルトの名無しさん
2018/12/02(日) 19:18:33.98ID:dV4bdQkD956デフォルトの名無しさん
2018/12/03(月) 00:53:09.20ID:G9VPwKeW #include <iostream>
#include <string>
using namespace std;
int main(void)
{
string x;
cin >> x;
for (int i = 0; i != x.size() - 1; ++i)
{
cout << stoi(x[i]) << endl;
}
}
#include <string>
using namespace std;
int main(void)
{
string x;
cin >> x;
for (int i = 0; i != x.size() - 1; ++i)
{
cout << stoi(x[i]) << endl;
}
}
957デフォルトの名無しさん
2018/12/03(月) 00:54:55.68ID:G9VPwKeW ⬆が動かないのですがどこが間違っているのかご教示下さい
C11は対応しています
C11は対応しています
958さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/12/03(月) 01:19:47.71ID:djmRhrD0 iはsize_t型にする。
文字コードや整数値に対しては、stoiは使えない。別の関数を使う必要がある。
文字コードや整数値に対しては、stoiは使えない。別の関数を使う必要がある。
959はちみつ餃子 ◆8X2XSCHEME
2018/12/03(月) 01:54:00.97ID:8f3NbPLB >>957
念のために確認するけど C11 って書いてるのは C++11 の間違いだよね?
念のために確認するけど C11 って書いてるのは C++11 の間違いだよね?
960デフォルトの名無しさん
2018/12/03(月) 06:05:42.99ID:szUqPRvW >>956 が動かないってのはコンパイルエラーということだよね。
string x; だから x[i] の型は char で、
一方 stoi() が要求する引数は string であるからして...
string x; だから x[i] の型は char で、
一方 stoi() が要求する引数は string であるからして...
961デフォルトの名無しさん
2018/12/03(月) 15:49:30.56ID:bFjQrMvM こういうことをしたいのではないか?
ここを cout << stoi(x[i]) << endl;
こうする cout << (isdigit(x[i])? x[i] - '0': 0) << endl;
ここを cout << stoi(x[i]) << endl;
こうする cout << (isdigit(x[i])? x[i] - '0': 0) << endl;
962デフォルトの名無しさん
2018/12/05(水) 04:14:09.40ID:yf36y6mU クラスの中の宣言部分で
var a = new classA(32);
がある時にこの生成時間を測るには
p1out = 1;
var a = new classA(32);
p1out = 0;
ってやってP1.1をオシロで確認したらいいのだろうか?
var a = new classA(32);
がある時にこの生成時間を測るには
p1out = 1;
var a = new classA(32);
p1out = 0;
ってやってP1.1をオシロで確認したらいいのだろうか?
963デフォルトの名無しさん
2018/12/05(水) 07:38:40.57ID:NuamTKdf >>962
varは使えない
varは使えない
964デフォルトの名無しさん
2018/12/05(水) 10:48:56.15ID:oN9rDST1 スタック領域と静的領域の違いがよくわかりません
965デフォルトの名無しさん
2018/12/05(水) 11:50:29.68ID:UMfTWITZ スタック領域に確保した変数のメモリはその変数のスコープ終了時に開放される
静的領域はスコープが終了しても開放されない
静的領域はスコープが終了しても開放されない
966デフォルトの名無しさん
2018/12/05(水) 14:18:35.25ID:2sSegHBZ だがちょっとまってほしい
本当にそれだけだろうか?
本当にそれだけだろうか?
967デフォルトの名無しさん
2018/12/05(水) 15:25:13.20ID:sPX0/PdA 質問はヒープには触れてないのでそれでいい
968デフォルトの名無しさん
2018/12/05(水) 16:03:55.84ID:ccXzaFBs 静的領域は、アプリの実行前に確保する。
サイズも変動しない
スタック領域は、アプリの実行中に確保・解放する。
サイズも変動するし、領域を使い果たすと、stack overflow というエラーが起きる
事前にサイズがわからず、サイズが変動して、エラーが起きる可能性もあるので、
組み込み制御装置では、制限される事もある
サイズも変動しない
スタック領域は、アプリの実行中に確保・解放する。
サイズも変動するし、領域を使い果たすと、stack overflow というエラーが起きる
事前にサイズがわからず、サイズが変動して、エラーが起きる可能性もあるので、
組み込み制御装置では、制限される事もある
969デフォルトの名無しさん
2018/12/05(水) 16:06:30.86ID:OoPTOqyP スタックの理解はCPUの動作原理から学んでいくとわかりやすいよ
970デフォルトの名無しさん
2018/12/05(水) 17:12:15.31ID:ifntcr/4 組込だとスタック4つまでとかあるね。
下手に関数の中で関数呼び出し出来ない。
今はだいぶ緩和されてるけど、数が増えただけでPCほど緩くはない。
下手に関数の中で関数呼び出し出来ない。
今はだいぶ緩和されてるけど、数が増えただけでPCほど緩くはない。
971デフォルトの名無しさん
2018/12/05(水) 21:08:04.50ID:vV3Kttot int num;
unordered_set<int> ust;
auto itr = ust.find(num);
itr == ust.end() ? ust.insert(num) : ust.erase(num);
とすると、
error: operands to ?: have different types
というエラーがでます
三項間演算子を使わずにif文を使って書くと普通に上手く行くのですが、なぜエラーがでるのでしょうか
unordered_set<int> ust;
auto itr = ust.find(num);
itr == ust.end() ? ust.insert(num) : ust.erase(num);
とすると、
error: operands to ?: have different types
というエラーがでます
三項間演算子を使わずにif文を使って書くと普通に上手く行くのですが、なぜエラーがでるのでしょうか
972デフォルトの名無しさん
2018/12/05(水) 21:30:51.95ID:8vnwU0Eo この前パソコンで100回くらいの再帰を書いたけど大丈夫だった
それともgccがよしなにやってんの?
それともgccがよしなにやってんの?
974デフォルトの名無しさん
2018/12/06(木) 06:42:35.96ID:6JYs1FEy 三項演算子が絡んだ式の (条件 ? 値A : 値B) 部分で
値Aと値Bの型が異なると、三項式(と言う呼び方で良いものか)全体としての
結果の型が確定しないからダメって感じかねぇ。
どうせ値を使っていない式文だからいいじゃん、は通らないと。
値Aと値Bの型が異なると、三項式(と言う呼び方で良いものか)全体としての
結果の型が確定しないからダメって感じかねぇ。
どうせ値を使っていない式文だからいいじゃん、は通らないと。
975デフォルトの名無しさん
2018/12/06(木) 08:07:06.33ID:puhZa8TL976デフォルトの名無しさん
2018/12/06(木) 08:18:42.80ID:n6QuFYEH コンマ演算子?は使えないのかしら
977デフォルトの名無しさん
2018/12/06(木) 08:20:40.49ID:A1HJrZlC 条件A ? (値A, 0) : (値B, 0)
とか?
if で良いだろ
とか?
if で良いだろ
978デフォルトの名無しさん
2018/12/06(木) 09:05:40.26ID:THHCczvq スタック領域は同じコンパイラでもオプションで変えられる事も多い(組み込みには言及しない)
末尾再帰だとループに展開されたりもするから(外から見た挙動が同じならC/C++はコンパイル後の表現を縛らない)、再帰イコールしぬとは限らない
末尾再帰だとループに展開されたりもするから(外から見た挙動が同じならC/C++はコンパイル後の表現を縛らない)、再帰イコールしぬとは限らない
979デフォルトの名無しさん
2018/12/06(木) 21:02:47.97ID:H1lCEtqj 副作用しかないときと値がある時で使い分けないとな
980デフォルトの名無しさん
2018/12/06(木) 23:32:58.57ID:/m41z1tb そう言えばC++20では[ , ]って形は多次元配列のために使われるんだな
981デフォルトの名無しさん
2018/12/07(金) 14:38:45.55ID:lkrG/qbb 型の違いでっていうのも判るが
結局評価だけして代入しないなら
(副作用を期待しないって条件付きだが)
最適化で消される行かも知れんな
結局評価だけして代入しないなら
(副作用を期待しないって条件付きだが)
最適化で消される行かも知れんな
982デフォルトの名無しさん
2018/12/13(木) 22:22:08.57ID:JDKMBsk/ https://ideone.com/pUrvlb
VisualStudioCommunity2017 ver15.9.4でこのコードをビルドすると
「error C2440: '<function-style-cast>': 'int' から 'Lit' に変換できません。」
というエラーが10行目で出るんだけど、何が悪いんだろうか。
VisualStudioCommunity2017 ver15.9.4でこのコードをビルドすると
「error C2440: '<function-style-cast>': 'int' から 'Lit' に変換できません。」
というエラーが10行目で出るんだけど、何が悪いんだろうか。
983デフォルトの名無しさん
2018/12/14(金) 01:28:14.98ID:l0obV/M9 Parser() { reg(Lit{ 1 }); } → Parser() { ::reg(Lit{ 1 }); }
コレでいける
理由は知らん
コレでいける
理由は知らん
984デフォルトの名無しさん
2018/12/14(金) 05:31:56.42ID:Op4CRLIg ありがとう
この方法で凌ぐことにします
この方法で凌ぐことにします
985デフォルトの名無しさん
2018/12/27(木) 10:14:18.41ID:aMHl4+JJ ubuntuで日本語含むファイル名を操作したいのでwoendirとかないのか探したんだけど見つからず、
wchar_tでファイル名処理した場合、いちいちmbstiwcsで変換するしかないの?
wchar_tでファイル名処理した場合、いちいちmbstiwcsで変換するしかないの?
986デフォルトの名無しさん
2018/12/27(木) 10:19:33.81ID:0qVX2+Xi 変換出来ない文字はどうすんの?
987デフォルトの名無しさん
2018/12/27(木) 10:37:38.48ID:aMHl4+JJ こっちが聞きたいんだけど
989デフォルトの名無しさん
2018/12/27(木) 12:49:46.03ID:aMHl4+JJ utf8のままどーやってopendirするのさ?
それができないから困ってるのに
DIR *dir = opendir("hogehoge");
struct dirent *dp;
dp=readdir(dir);
としたとき,dp->d_nameに入ってるファイル名ってのはcharだよね
このファイル名に手を加えようとする(renameとか)と、utf8の場合、いったんmbstowcsでwchar_tにでもコピーするとか、
wstringにでもコピーしないと文字コードと格闘する羽目になるよね。
もし、
wDIR *wdir = woprndir(L"hogehoge");
struct wdirent *wdp;
wdp = wreaaddir(wdir);
とかできればsonomama
wdp->d_nameはwcha_tなので文字の先頭バイト見て何文字なのか判断するなんて余計な操作しなくて済むと思ったわけ。
それができないから困ってるのに
DIR *dir = opendir("hogehoge");
struct dirent *dp;
dp=readdir(dir);
としたとき,dp->d_nameに入ってるファイル名ってのはcharだよね
このファイル名に手を加えようとする(renameとか)と、utf8の場合、いったんmbstowcsでwchar_tにでもコピーするとか、
wstringにでもコピーしないと文字コードと格闘する羽目になるよね。
もし、
wDIR *wdir = woprndir(L"hogehoge");
struct wdirent *wdp;
wdp = wreaaddir(wdir);
とかできればsonomama
wdp->d_nameはwcha_tなので文字の先頭バイト見て何文字なのか判断するなんて余計な操作しなくて済むと思ったわけ。
990デフォルトの名無しさん
2018/12/27(木) 13:00:04.82ID:aMHl4+JJ bashで
for i in *; do
$newname=`echo $i| myprogram`
mv $i $newname
done
で済ませてたんだけど、myprogramの方は単に文字処理だけで、
置換とか文字列削除とかややこしいところはwstringに変換してた。
bashに任せてたディレクトリオープンや、ファイル操作までC/C++でやらせようとなると、
再度wcstombsとか余計なコピーが必要になってなんだか思いっきり損してる気分になったので、
なんかほかの手がないものかと?
for i in *; do
$newname=`echo $i| myprogram`
mv $i $newname
done
で済ませてたんだけど、myprogramの方は単に文字処理だけで、
置換とか文字列削除とかややこしいところはwstringに変換してた。
bashに任せてたディレクトリオープンや、ファイル操作までC/C++でやらせようとなると、
再度wcstombsとか余計なコピーが必要になってなんだか思いっきり損してる気分になったので、
なんかほかの手がないものかと?
991デフォルトの名無しさん
2018/12/27(木) 13:49:46.07ID:SzdNjvIa >>989
utf8 を wchar_t* に入れるのはただのアホやろ
utf8 を wchar_t* に入れるのはただのアホやろ
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 空自機レーダー照射、音声データ公開 中国 [蚤の市★]
- 【和訳付き】レーダー照射問題 中国軍と自衛隊との“音声データ”公開 中国国営メディア [♪♪♪★]
- 「中国側も日本機のレーダーを感知していた」 中国メディアが報道 [♪♪♪★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」★3 [ぐれ★]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ [597533159]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ★2 [597533159]
- 現役JKのお茶会スレ( ¨̮ )︎︎𖠚ᐝ180
- 廣井きくり「でへへへ、ぼっちちゃーん」サワサワ ぼっち「あ、あの…」星歌「…」
- 【悲報】JA「全然米が売れなくて倉庫を圧迫してる。助けて!」米卸売り業者「安売りしたら赤字になる…助けて!」 [802034645]
- 中国の日本向けレアアースの輸出止まる、高市のせいで日本終了のお知らせ [931948549]
