Guest:
Register
|
Login
|
Member List
|
Statistics
|
FAQ
Minidx Support Forum
»
日本語ユーザ
» vector<string> を char * の配列で初期化できない
‹‹ Last Thread
|
Next Thread ››
Poll
Trade
Reward
Activity
Printable Version
|
Email to Friend
|
Subscription
|
Favorites
Subject: vector<string> を char * の配列で初期化できない
dingzhigang
Administrator
UID 2
Digest Posts 0
Credits 40
Posts 75
Reading Access 200
Registered 27-3-2007
Status Offline
#1
Post at 6-6-2007 16:33
Profile
|
Blog
|
P.M.
vector<string> を char * の配列で初期化できない
次のコードは、vector<string> の適切なコンストラクタを選択することに失敗するようだ。
const char *strArray[] = { "foo", "bar", "hoge" };
vector<string> strVector( strArray, strArray+3 );
しかたがないので、resize してから copy という方法で逃げる。
const char *strArray[] = { "foo", "bar", "hoge" };
vector<string> strVector( 3 );
std::copy( strArray, strArray+3, strVector.begin() );
この方法は、コンストラクタの初期化指定のところに書けないのがつらいところ。
# 従来の C 標準ライブラリに含まれる識別子は std 名前空間で宣言されていない
#include <cstdio>
int main()
{
std::printf( "foo\n" );
}
などとやると、VC++ は、「error C2039: 'printf' : 'std' のメンバではありません。」 とかいうエラーを返してくれる。要するに、cstdio は、 stdio.h への単なるシンボリックリンクってことか?
# std::string は、clear() メソッドをサポートしていない
かわりに、erase() メソッドを使う。
# set_new_handler ではなく _set_new_handler を使う
かつ、
* <new> に加え、 <new.h> もインクルードする
* ハンドラ型の名前は、new_handler ではなく、_PNH
* ハンドラ型の定義は、int (*_PNH)( unsigned int )
# using std::vector; を宣言しておいても vector<int>::iterator が使えない
やはり、std:: で修飾してやらないといけない。
std::vector<int>::iterator it = vec.begin();
テンプレートに対する using 宣言は、 その instanciation には及ばないのか? 謎だ。
# using namespace X; と using X::foo; を同時に宣言すると、 オーバーロードの解決が出来なくなる
たとえば、次のようなコードでは、foo のオーバーロードの解決ができない。 (ひょっとすると、C++ の標準仕様かも? g++ では通っちゃうけど)
namespace FOO {
void foo( int ch );
void foo( const char *s );
}
using namespace FOO;
using FOO::foo;
int main()
{
foo( "abc" );
return 0;
}
# クラステンプレート内でのテンプレート friend 関数の記法
template<class T> class Foo;
template<class T> void func( Foo<T> * );
template<class T> class Foo {
friend void func<T>( Foo<T> * ); // コンパイルエラー
friend void func( Foo<T> * ); // コンパイルが通る
};
でも、標準規格は、前者の「コンパイルエラー」のほうだ。
[Adv.]
Poll
Trade
Reward
Activity
Minidx Support Forum
Minidx
> English User
> 日本語ユーザ
> 中文用户
All times are GMT+8, the time now is 2-12-2008 03:50
Processed in 0.082096 second(s), 7 queries , Gzip enabled
TOP
Clear Cookies
-
Contact Us
-
Minidx Inc
-
Archiver
-
WAP
Member's CP Home
Edit Profile
Credits Transaction
Public User Groups
Buddy List
Main
Page Views
User Agents
Posts History
Top Forums
Top Threads
Post Ranking
Credit Ranking
Online Time
Team