推 snoopy0907:謝謝~好簡潔俐落的寫法:) 11/29 11:15
如果你只是很單純想要把 vector 傳入 C function
※ 引述《snoopy0907 (我是男的喔~^0^")》之銘言:
: #include<iostream>
: #include<vector>
: using std::cin;
: using std::cout;
: using std::endl;
: using std::vector;
: bool main( int argc , char *argv[] )
: {
: vector<int> v;
: size_t i=0; //計數
: signed int g; //儲存輸入
: while(cin >> g)
: {
: v.push_back(g);
: }
/* 這段完全不需要
: //用兩個指標相減得vector長度
: vector<int>::iterator p = v.begin();
: vector<int>::iterator q = v.end();
: vector<int>::difference_type x = q - p;
: //型別轉換 difference_type轉size_t
: for(vector<int>::difference_type a = 0 ; a != x ; ++a )
: {
: i=i+1;
: }
*/
: signed int *k = new signed int[i]; //宣告動態陣列
const int * k = &v[0]; // vector 保證元素連續性
/* 不用複製了
: for( p , k ; p != q ; ++p , ++k ) //複製
: {
: *k = *p;
: }
*/
: for( signed int j=0 ; j != i ; ++j ) //列印
: {
: cout << *(k+j);
: }
for( size_t i = 0; i < v.size(); ++i ) {
cout << k[i];
}
/*
: delete [] k;
*/
: return true;
: }
--
自High筆記(半荒廢)
http://legnaleurc.blogspot.com/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.205.248.119
※ 編輯: legnaleurc 來自: 123.205.248.119 (11/28 19:35)