C++ 如何使用for循环遍历向量?我试图在YouTube上查找它,但无法';我找不到答案

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;

我不知道如何使用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;
   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完全消除手动循环。rd
    std::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;
    }