从数组构造向量

时间:2013-09-04 04:20:02

标签: c++ arrays vector constructor initialization

我尝试从数组初始化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;

其中lbfgsfloatval_t适用于doublefloat

输出:

0 1 99
0 0 0
编辑:我已经发现了问题。它与我在此问题中发布的代码无关。

1 个答案:

答案 0 :(得分: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::前缀:)