0

配列からa を初期化しようとしましたstd::vectorが、配列は正しく初期化されていますが、ベクトルにはゼロが含まれています。

コード:

lbfgsfloatval_t * k_array = new lbfgsfloatval_t[100];
for(int i = 0; i < 100; i++)
    k_array[i] = (lbfgsfloatval_t)i;

vector<lbfgsfloatval_t> k_vector(k_array, k_array+100);

cout << k_array[0] << " " << k_array[1] << " " << k_array[99] << endl;
cout << k_vector[0] << " "<< k_vector[1] << " "<< k_vector[99] << endl;

whereはまたはlbfgsfloatval_tとして機能します。doublefloat

出力:

0 1 99
0 0 0

編集:私はすでに問題を発見しました。この質問に投稿したコードとは関係ありませんでした。

4

1 に答える 1

2

これはあなたが投稿したものと同等のコードですint。代わりに使用するだけです:

#include <iostream>
#include <vector>

int main()
{
    int * arr = new int[100];
    for(int i = 0; i < 100; i++)
        arr[i] = (int)i;

    std::vector<int> vec(arr, arr+100);

    std::cout << arr[0] << " " << arr[1] << " " << arr[99] << std::endl;
    std::cout << vec[0] << " " << vec[1] << " " << vec[99] << std::endl;
}

出力:

0 1 99
0 1 99

したがって、発生している問題は、配列からのベクトルの構築が原因ではありません。適切なデバッガーを使用してコードを段階的に実行し、実行時に何が起こっているかを理解する必要があります。

また、グローバルスコープ内は悪い習慣であり、通常は代わりにプレフィックスを使用using namespace std;する方がはるかに優れていることに注意してください:)std::

于 2013-09-04T04:59:51.037 に答える