在C++中打印矢量 我是C++的新手,我做了一个函数,它读取向量中的元素和打印元素的函数。问题是打印功能不能正常工作 #include <iostream> using namespace std;
一, 二,在C++中打印矢量 我是C++的新手,我做了一个函数,它读取向量中的元素和打印元素的函数。问题是打印功能不能正常工作 #include <iostream> using namespace std;,c++,C++,一, 二, 它打印的是1348而不是12345。该函数有什么问题?如何修改它以打印正确的元素?您的打印函数有错误 for(i=1;i<=elements;i++) { //^^^^^ cout<<v[i]; ++i; //You would like to skip some elements? } 将索引i增加两次,数组索引从0开始,而不是从1开始;它以数字元素结束,1不是元素,同时,您使用的是数组,而不是向量 int
它打印的是1348而不是12345。该函数有什么问题?如何修改它以打印正确的元素?您的打印函数有错误
for(i=1;i<=elements;i++)
{ //^^^^^
cout<<v[i];
++i; //You would like to skip some elements?
}
将索引i增加两次,数组索引从0开始,而不是从1开始;它以数字元素结束,1不是元素,同时,您使用的是数组,而不是向量
int v[elements];
这将创建一个新的整数数组
传递数组相对比较困难,因为您必须小心处理内存分配,而且它们可以追溯到C的旧时代
当你学习C++时,你可以使用类来管理内存问题。在语法上类似于数组,但负责为您分配和调整大小,并记住它的大小
您可以通过引用&将对象传递到函数中,在函数内部,它将能够修改传入的对象,并在函数完成后产生持久的效果void read(vector<int>& elements) {
// in here you can resize the vector
}
void print(const vector<int>& elements) {
// passing in elements by const reference means you can't modify it
}
用法:
int main() {
UserIntegers userIntegers;
userIntegers.process();
}
在read中,将元素读入本地数组v。当函数结束时,数组也将消失。同样的情况也发生在print_vector中
另一个错误是数组的索引。可以访问从1到包含1的元素,这将忽略第一个元素0,并最终访问数组边界元素之外的一个元素
您需要在这两个函数之外分配一个数组,最好是一个std::vector,并将其传递到read进行填充,然后传递到print_vector进行打印
#include <iostream>
#include <vector>
void read(std::vector<int> &v)
{
int elements,i, n;
std::cout<<"Give the number of elements:";
std::cin>>elements;
for(i = 0; i < elements; i++)
{
std::cout<<"v["<<i<<"]=";
std::cin>> n;
v.push_back(n);
}
}
void print_vector(const std::vector<int> &v)
{
for(auto i = v.begin(); i != v.end(); ++i)
{
std::cout << *i;
}
}
int main()
{
std::vector<int> v;
read(v);
print_vector(v);
return 0;
}
您的代码正在使用编译器扩展。使用std::vector而不是可变长度数组。请阅读并遵循建议。我应该如何设计打印函数,使其不会创建新的整数数组?我认为您缺少std::的模板参数:vector@JorgeN谢谢你,我错过了。固定的
int main() {
vector<int> elements;
read(elements);
print(elements);
}
class UserIntegers {
public:
void process() {
read();
print();
}
private:
vector<int> numbers;
};
int main() {
UserIntegers userIntegers;
userIntegers.process();
}
#include <iostream>
#include <vector>
void read(std::vector<int> &v)
{
int elements,i, n;
std::cout<<"Give the number of elements:";
std::cin>>elements;
for(i = 0; i < elements; i++)
{
std::cout<<"v["<<i<<"]=";
std::cin>> n;
v.push_back(n);
}
}
void print_vector(const std::vector<int> &v)
{
for(auto i = v.begin(); i != v.end(); ++i)
{
std::cout << *i;
}
}
int main()
{
std::vector<int> v;
read(v);
print_vector(v);
return 0;
}