【发布时间】:2012-12-29 14:32:54
【问题描述】:
我是 C++ 新手,我正在编写以下代码。
我需要遍历调用函数中的所有插件 - testFunction。我知道这在 C# 中有效,但这段代码不起作用。谁能指出用 C++ 做的正确方法?
#include "stdafx.h"
#include <iostream>
#include "resource.h"
int testFunction(char* tester);
int _tmain()
{
int mainProd=2;
int Addons[]={7,8,9,10};
testFunction(mainProd,Addons);
}
void testFunction(int mainProd,int addons[])
{
for(int x = 0 ; addons.length;++x) ---- Not working
{
std::cout<< addons[x];
}
}
我尝试按照你们的以下建议实现向量
#include "stdafx.h"
#include <iostream>
#include "resource.h"
#include <vector>
void testFunction(std::vector<int> addons);
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<int> Addons ;
for(int i = 0 ;i<10;++i)
{
Addons.push_back(i);
}
testFunction(Addons);
}
void testFunction(std::vector<int> addons)
{
for(int i =0 ; i<addons.size();++i)
{
std::cout<<addons.at(i);
}
}
【问题讨论】:
-
您从哪里得知
.length会起作用?也许您需要选择a better book? -
你最喜欢的 C++ 书籍是怎么说的?
-
fordward 也声明了 testFunction 的正确版本。
-
通过引用传递向量以避免不必要的复制
void testFunction(const std::vector<int> &addons) // note the 'const' and the '&' -
for(int i =0 ; i<addons.size();++i)是迭代向量的糟糕风格。请改用begin和end。
标签: c++ visual-c++ c++11