FC2 ザ掲示板

カテゴリ
テーマ別トーク >> デジタル・家電

C++/STL

このエントリーをはてなブックマークに追加

[0] yk 2007/03/03 23:43

STL全般について意見を交換し合うためのスレです。
STLを用いたテクニックや不満などSTLに関わることなら何でもおkです。

43件のコメント 24番から43番を表示中

最初から 前の100件 全部 最新20件 dat viwedatをダウンロード
[24] nulume 2007/03/04 02:03

miso

[25] Katz 2007/03/04 11:10

お邪魔します(^_^)
我未だSTLを知らず、焉んぞboostを知らんや。

>>20
> それとboostはインストールが難しいです。

ストリームを除けば、アーカイブを解凍してパスを通すだけじゃありませんでしたっけ。
私はC++のストリームは好きではないので頑固に避けてます:p

[26] nulume 2007/03/04 17:29

STL知らなくてもboost知ることできるけどねw(´∀`)

[27] Yura Suguru 2007/03/06 06:45

boostでたしかにインストールが面倒なものはpython,regex,thread,serializationとか。
ほとんどはパス通せばOK

といっても、boost使ってるのにregexにserialization使えないってアホだけど

[28] _ 2007/03/07 02:58

C++0xはいつ出るんだろう

[29] 東田 2007/03/07 04:49

regexは重要、必須。

TR1はいつ出るんだろう

[30] L2 2007/03/21 02:30

改めてBoost読んでた
もう俺には無理。
MDC++Dぐらいは理解できるんだけど、作る側に絶対回れないとかおもた
boost凄杉

とりあえず使い方を重点的に覚えようと思う。

[31] yuuki--; 2007/03/23 03:49

いくらboostやstdが好きだからって…

↓ここまで乱用してしまうのはやっぱダメですよねww

std::for_each(m_AddTaskList.begin(), m_AddTaskList.end(), boost::bind(boost::mem_fn<TaskList::iterator>(&TaskList::insert), &m_TaskList, boost::bind(std::lower_bound<TaskList::iterator, boost::shared_ptr<TaskBase>, PriorityCompare>, boost::bind(boost::mem_fn(&TaskList::begin), &m_TaskList), boost::bind(boost::mem_fn(&TaskList::end), &m_TaskList), _1, PriorityCompare()), _1));

展開して書くと、

for(AddTaskList::iterator iter=m_AddTaskList.begin(); iter!=m_AddTaskList.end(); iter++)
{
m_TaskList.insert(std::lower_bound(m_TaskList.begin(), m_TaskList.end(), *iter, PriorityCompare()), *iter);
}

って、普通にかけるんですけどねw

[32] ななな 2007/04/19 17:40

テスト

[33] Katz 2007/05/18 17:44

一つ質問です。

std::vector は、内部的なメモリ領域が連続している事を保証してるみたいですな。
そのおかげで「時々」メモリの再確保→全内容コピーが発生して、
仕組を知らないと痛い目に遭うわけですが。
ちなみに私も痛い目にあいました☆

std::dequeue はその辺どうなんでしょう。
ランダムアクセスはしなくて、push_back()とイテレータを回すくらいしかやらなくて、
イテレータを回すとpush_back()の順番で要素にアクセスしたくて、
という状況下において実行コストの安いものを知りたいのです。

dequeueはどうもよくわからなくて…
vectorにしても上述の「時々コスト発生」をコストとして数えていない解説ばかりで。

[34] azt 2007/06/13 15:46

std::listでいいのでは?

[35] 柳沢 2007/07/03 13:45

STLて何ですか?
C++から作ったプログラム言語ってことですか?
ほかのプログラムに比べてどういった利点があるのか
教えていただければうれしいです

[36] ふんがー 2007/07/09 12:01

>>33
遅レスすまんせん。
多分、std関連の具体的な実装はベンダ依存です。多分・・
「vectorはメモリ領域が連続してることを保障する」
というものとかは見ますが、
std::stringなんかの実装はMSでは相当いろいろやってます。

std::dequは末端要素の追加/削除は定数時間という規定が(一応)あるので、dequeでOKなのではないでしょうか。

僕はstd::listが好きです!

[37] Katz 2007/07/11 17:24

>>34
ありがとうございます。
std::list はちょ〜っと重い気がしまして。
イマドキのマシンパワーでは気にするほどでもないのはわかってるんですけど…

>>36
こちらこそ遅レスすんまそん。
具体的な実装はベンダ依存ですけど、
アクセスのコストは仕様で決まってますよね。
std::vector のpush_back()に関する「時々 O(N)」に触れてる文書が
見当たらないのが不思議なんです。
実装上の問題として時々全コピーと解説してる所はありましたが、
なぜか仕様として時々O(N)とは書いてない。
ぶっちゃけ仕様違反とも取れる挙動と思うんですけど…
仕様の原文(英語)なんか読む気にならないし(-_-;)

と言うわけで「末端要素の追加・削除は定数時間」という仕様を信じきれないのです。
ホントに毎回例外無く必ず定数時間?

ふと気が付くと std::vector と std::map 以外は使った事が無い私(^_^;)
あ、std::set と std::min と std::max は一度だけ使いました:p

[38] Katz 2007/07/11 17:28

>>35
STLとはC++の上で使う為のライブラリです。
配列とかリストとかのデータ保持構造(およびそれを利用した各種アクセス)をまとめたものです。
通常、他の言語では言語仕様の一部として提供されるか、
まるっきり無視して全く提供されないか、
そんなような内容です。

[39] グラス 2007/07/13 16:37

#include <stdio.h>

int main(void)
{
  char str[10];

  //scanf("%s",str);
  gets(str);
  printf("%s\\n",str);

  return 0;
}

これはscanfとgetsのいずれかで文字列入力しているプログラムですが、
↑のようにgetsで入力した場合、半角文字も入力できますが、
scanfの場合、半角文字は文字列の区切りとして判定されてしまい、
それ以降の文字列は入力不可です。

このプログラムはCの内容ですが、これをC++書くとしたら、
どういったソースになるのでしょう?

#include <iostream>
using namespace std;

int main(void)
{
  char str[10];

  cin >> str;
  cout << str << endl;

  return 0;
}

この場合だと、半角文字を区切りとして判定されてしまいます。
お願いします。

[40] Hermit 2007/07/13 21:45

http://nun.nu/www.geocities.jp/ky_webid/cpp/library/029.html
の最後のあたりかな。

[41] グラス 2007/07/18 11:14

>>40
ありがとうございました!

[42] 謎の少年→(・ー・)ノ 2007/09/15 22:26

てすと

[43] 似非右翼オビツ 2019/11/30 17:22 v2/mzfLAoW9

舟橋市中山

[ 削除依頼 ]

【コメントをお寄せ下さい。】