C++ 如何使用for循环遍历向量?我试图在YouTube上查找它,但无法';我找不到答案
我不知道如何使用for循环访问向量的元素来找到平均值。我试图寻找解决办法,但什么也找不到。我写的一小段代码似乎不是解决方案C++ 如何使用for循环遍历向量?我试图在YouTube上查找它,但无法';我找不到答案,c++,for-loop,vector,C++,For Loop,Vector,我不知道如何使用for循环访问向量的元素来找到平均值。我试图寻找解决办法,但什么也找不到。我写的一小段代码似乎不是解决方案 #include <iostream> #include <vector> using namespace std; int main() { const int VALS_SIZE = 6; vector<int> valsVctr(VALS_SIZE); unsigned int i; int sumVal;
#include <iostream>
#include <vector>
using namespace std;
int main() {
const int VALS_SIZE = 6;
vector<int> valsVctr(VALS_SIZE);
unsigned int i;
int sumVal;
int avgVal;
valsVctr.at(0) = 30;
valsVctr.at(1) = 20;
valsVctr.at(2) = 20;
valsVctr.at(3) = 15;
valsVctr.at(4) = 5;
valsVctr.at(5) = 10;
sumVal = 0;
avgVal = 0;
/* FIXME: Write for loop to iterate through vector */
for(int i = 0; i < 7;i++)
valsVctr[i] = i+1;
avgVal = sumVal / VALS_SIZE;
cout << "Avg: " << avgVal << endl;
return 0;
}
#包括
#包括
使用名称空间std;
int main(){
const int VALS_SIZE=6;
向量VALVCTR(VAL_大小);
无符号整数i;
内苏姆瓦尔;
int avgVal;
(0)处的VALVCTR=30;
(1)处的VALVCTR=20;
(2)处的VALVCTR=20;
(3)处的VALVCTR=15;
(4)处的VALVCTR=5;
(5)处的VALVCTR=10;
sumVal=0;
avgVal=0;
/*FIXME:为循环编写代码以遍历向量*/
对于(int i=0;i<7;i++)
VALVCTR[i]=i+1;
avgVal=sumVal/VALS_尺寸;
cout您不应该对
循环使用显式
for(int i = 0; i < 7;i++) //
另外,sumVal
和avgVal
类型float
或double
比int
更好,您可以使用for
循环和迭代器:
std::vector<int>::const_iterator iter;
std::vector<int>::const_iterator end_iter(valsVctr.end());
for (iter = valsVctr.begin(); iter != end_iter; ++iter)
{
std::cout << *iter << endl;
}
注意:向量的大小被分配给一个临时变量,以防止在每次迭代中调用size()
方法(尽管编译器可以在更高的优化级别上执行此优化)。下面的每种方法都有效
对于(int i=0;i<6;i++)
sumVal+=valsVctr[i]
用于(int k:VALVCTR)
SUMVAL=K;//C++ 11</P>
不相关,但你最好不要从YouTube上学习C++。它是一种复杂的语言,你会想要一本好书。注意: const Auto& 是未来的打样。现在你可以随便扔任何东西,不必改变代码。你可以用Stand完全消除手动循环。rdstd::acculate()
algorithm:sumVal=std::acculate(valsVctr.begin(),valsVctr.end(),0);
@RemyLebeau是的,这将完全消除循环(循环是OP要求的)。
std::vector<int>::const_iterator iter;
std::vector<int>::const_iterator end_iter(valsVctr.end());
for (iter = valsVctr.begin(); iter != end_iter; ++iter)
{
std::cout << *iter << endl;
}
const unsigned int limit = valsVctr.size();
for (unsigned i = 0; i < limit; ++i)
{
valsVctr[i] = i + 1;
}