如何打印整个矢量?

How do I print an entire vector?

本文关键字:何打印 打印      更新时间:2023-10-16

我希望打印向量"listofnums"中的所有项目。我尝试将"cout <<listofnums[i]"放在 for 循环中,以为它会在迭代时打印每个项目,但这不起作用。把cout放在循环之外对我也不起作用。

#include <iostream>
#include <vector>
using namespace std;
int main(){
//variables
int a, b, i = 0; // a & b inputs, i for iterating
int likedigits = 0; //counts the number of like digits

//entering number range
cout << "Enter the first number" << endl;
cin >> a;
cout << "Enter the second number" << endl;
cin >> b;

//making a vector to contain numbers between a and b
vector<int> listofnums((b-a)+1); 
for (i <= (b-a); i++;) {  
int initialvalue = a;
listofnums[i] = initialvalue;                                 
initialvalue++;                                               
}

cout << listofnums << endl;
return 0;
}

对于初学者来说,for 语句

for (i <= (b-a); i++;) {  

写错了。你是说

for ( ;i <= (b-a); i++) {  

在此(更新(中 for 循环

for ( ;i <= (b-a); i++) {  
int initialvalue = a;
listofnums[i] = initialvalue;                                 
initialvalue++;                                               
}

向量的所有元素都具有值 a,因为变量initialvalue是在每次迭代中定义的。将变量的声明放在 ,循环之外。

int initialvalue = a;
for (i <= (b-a); i++;) {  
listofnums[i] = initialvalue;                                 
initialvalue++;                                               
}

要输出向量,您可以使用例如基于范围的 for 循环

for ( const auto &item : listofnums )
{
std::cout << item << ' ';
}
std::cout << 'n';

这是一个演示程序。

#include <iostream>
#include <tuple>
#include <vector>
#include <algorithm>
int main()
{
int a = 0, b = 0; 
std::cout << "Enter the first number: ";
std::cin >> a;
std::cout << "Enter the second number: ";
std::cin >> b;
std::tie( a, b ) = std::minmax( { a, b } );
std::vector<int> listofnums( b - a + 1 ); 
int initialvalue = a;
for ( auto &item : listofnums ) item = initialvalue++;
for ( const auto &item : listofnums )
{
std::cout << item << ' ';
}
std::cout << 'n';
return 0;
}

其输出可能如下所示

Enter the first number: 10
Enter the second number: 5
5 6 7 8 9 10 

它现在可以工作了 - 根据莫斯科的弗拉德的建议,并将第一个 for 循环更改为 while 循环:

#include <iostream>
#include <vector>
using namespace std;
int main(){
//variables
int a, b, i = 0; // a & b inputs, i for iterating
//entering number range
cout << "Enter the first number" << endl;
cin >> a;
cout << "Enter the second number" << endl;
cin >> b;

//making a vector to contain numbers between a and b
vector<int> listofnums((b-a)+1); 
int initialvalue = a;
while (i <= (b-a)) {  
listofnums[i] = initialvalue;                                 
initialvalue++; 
i++;
}
for ( const auto &item : listofnums ){
std::cout << item << ' ';
}
std::cout << 'n';
return 0;
}