0

我试图std::vector从数组初始化 a ,但是尽管数组已正确初始化,但向量包含零。

代码:

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;

在哪里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 回答