繁体   English   中英

如何使用向量打印值以及如何将值添加到数组的末尾?

[英]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 []创建第二个数组,并复制第一个数组。 请记住删除原始的[]。 或者,更好的是,摆脱数组并使用向量,然后只推回新元素。 向量会自动调整大小。

  1. 您应该在for()循环中将i初始化为0。
    要打印这些值,您必须进行另一个for()循环,但不必将元素添加到列表中,而是将它们打印到cout中。

    对于(...)
    {
    //打印到cout
    }

  2. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM