【发布时间】:2013-12-03 04:20:55
【问题描述】:
我有很多必须用 C++ 编写的 C# 代码。我在 C++ 方面没有太多经验。
我正在使用 Visual Studio 2012 进行构建。该项目是C++ 中的静态库(不是 C++/CLI)。
如果这个问题已经回答了,我很抱歉,但是我找不到它。
在 C# 代码中,他们会像这样初始化很多数组:
C#
double[] myArray = {10, 20, 30, 40};
看看他们如何使用数组,在将代码复制到 C++ 时,我决定使用 std::vector 来替换它们。我希望能够以相同的方式初始化向量,因为在单元测试中他们大量使用数组初始化,但我不能。我认为在 c++ 的其他版本中,vector 支持它,但在我拥有的版本中不支持。
(更新)为了让我之前的声明更清楚:
这在 VS2012 中不起作用:
vector<double> myVector{10, 20, 30, 40};
从this question我学会了从数组中创建一个向量,所以现在我有了这样一个函数:
C++
template<typename T, size_t N>
static std::vector<T> GetVectorFromArray( const T (&array)[N] )
{
return std::vector<T>(array, array+N);
}
效果很好,但现在这意味着我必须创建数组然后使用我的函数:
C++(我想避免这种情况,因为 UnitTest 有很多数组。)
double array[] = {1, 3, 5};
vector<double> myVector = ArrayUtils::GetVectorFromArray(array);
有没有办法让我的函数 GetVectorFromArray 接收项目列表,然后我可以将其转换为向量? 我的编译器不支持 C++11
【问题讨论】:
-
The link you're mentioning 是 gcc 专用的,但您使用的是 MSVC2012。
-
你为什么不用
vector<double> myVector{1, 3, 5}? -
@Johan 因为它没有构建。我读到这是矢量的更新功能,我得到了你的代码:错误 2 错误 C2143:语法错误:缺少';'在'}'之前
-
@IvanGrynko 我是多么愚蠢,我读了它然后我完全忽略了它。我将编辑我的问题。底线我希望能够做这样的事情。