[英]is this **vector of *vectors correct ?, and how can I print out all values in all vectors
[英]How to can I print values using vectors and how can I add a value to the end of an array?
我有两个问题:
1-如何为以下代码打印a的值???
#include <iostream>
#include <list>
using namespace std;
int main()
{
int i;
list<int> a;
for(i; i<5; i++)
{
a.push_back(i);
}
system("pause");
return 0;
}
2-如何将新元素添加到整数数组? 例如,我有一个这样的数组:
int *a;
int size = 3
a = new int [size];
a[0]=0;
a[1]=1;
a[2]=2;
//Now, I would like to add a new element to my array by increasing its size by one
size += size; // new size is 4
如何使用具有新大小的数组并将新元素添加到数组的末尾?
(1)
list<int>::const_iterator it;
for (it = a.begin(); it != a.end(); ++it)
cout << *it << endl;
(2)使用new []创建第二个数组,并复制第一个数组。 请记住删除原始的[]。 或者,更好的是,摆脱数组并使用向量,然后只推回新元素。 向量会自动调整大小。
您应该在for()循环中将i初始化为0。
要打印这些值,您必须进行另一个for()循环,但不必将元素添加到列表中,而是将它们打印到cout中。
对于(...)
{
//打印到cout
}
int * b =新的int [大小+ 1];
您应该使用memcpy()将a复制到b,然后将最后一个元素添加到b。
最后,您还应该为a和b调用delete。
1 。 优先使用std
算法而std
手动编码for
循环:
std::copy(list.begin(), list.end(),
std::ostream_iterator<int>(std::cout, "\n"));
如果手动编码循环仍然是正确的选择,请考虑Boost.Foreach :
BOOST_FOREACH(int i, list) {
std::cout << i << "\n";
}
2这是为什么应该使用std
容器而不是指针和数组的原因之一。 让其他人调试硬代码。
int* newa = new int[newsize];
std::copy(a, a+std::min(newsize, size), newa);
delete[] a;
a = newa;
size = newsize;
但是,此代码会将多余的项目保留为初始化还是未初始化? 此代码提供哪些例外保证? 最好完全跳过new
,只声明一个std::vector
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.