C ++中的动态数组

时间:2010-12-22 04:29:10

标签: c++

我是C ++和编程的新手。我很感激在C或C ++中对动态数组大小的帮助。

ex: - 我需要将值存储到数组中。 (价值可以改变)

设置1:0,1,2,3

设置2: - 0,1,2,3,4

设置3: - 0,1

设置4: - 0

所以我希望他们在数组处理中存储set one的值然后将set 2存储在同一个数组中,依此类推???

请回复,

谢谢

4 个答案:

答案 0 :(得分:9)

C ++中的动态数组称为std::vector<T>,其中T替换为您要存储在其中的类型。

您还必须将#include <vector>放在程序的顶部。

e.g。

#include <vector> // instruct the compiler to recognize std::vector

void your_function(std::vector<int> v)
{
  // Do whatever you want here
}

int main()
{
  std::vector<int> v; // a dynamic array of ints, empty for now

  v.push_back(0); // add 0 at the end (back side) of the array
  v.push_back(1); // add 1 at the end (back side) of the array
  v.push_back(2); // etc...
  v.push_back(3);
  your_function(v); // do something with v = {0, 1, 2, 3}

  v.clear();       // make v empty again
  v.push_back(10);
  v.push_back(11);
  your_function(v); // do something with v = {10, 11}
}

请注意更有经验的程序员:是的,这里可以改进很多东西(例如const引用),但我担心这只会让初级程序员感到困惑。

答案 1 :(得分:4)

您可以使用std::vector

  

Vector容器实现为动态数组;与常规数组一样,向量容器将其元素存储在连续的存储位置,这意味着它们的元素不仅可以使用迭代器访问,还可以使用常规指向元素的偏移量来访问。

答案 2 :(得分:4)

好像你想要一个std::vector<int>

答案 3 :(得分:1)

您的问题并不完全清楚,但听起来好像您从一组数据开始,在该组上执行一些生成另一组的任务,一个使用新组的任务并创建另一组?

如果是这种情况,您可能想了解swap

e.g。

int main(void)
{
    std::vector<int> inputs, outputs;
    // push_back something into inputs

    // perform some task 1 on inputs which fills in outputs
    inputs.swap(outputs); // now the outputs of task 1 have become the inputs of task 2
    outputs.clear();

    // perform some task 2 on inputs which fills in outputs
    inputs.swap(outputs); // now the outputs of task 2 have become the inputs of task 3
    outputs.clear();

    // perform some task 3 and so on

    return 0;
}