使用c ++ STL的数组实现

时间:2018-05-20 09:21:19

标签: c++ stl

我试过这两个无法理解的区别

     vector<int >a(n) and vector<int >a[n]

请有人解释。谢谢

3 个答案:

答案 0 :(得分:4)

您的问题的简单答案是:

  • vector<int >a(n)是一个vector<int>个对象,初始大小为n个元素。

  • vector<int >a[n]n vector`对象的固定数组,每个对象的初始大小为0.

答案 1 :(得分:1)

你的问题根本没有提供任何背景,因此很难制定答案。

首先,矢量和数组之间存在差异。数组是用于相同类型元素的固定大小容器,向量是用于相同类型元素的可调整大小的容器。对于数组,您不需要STL(尽管STL中有数组实现)。

这些是你的选择:

def game_loop():
        x = display_width * 0.45
        y = display_height * 0.8
        x_change = 0
        accel_x = 0
        y_change = 0
        accel_y = 0
        max_speed_x = 2.5
        max_speed_y = 2.5

    gameExit = False

    while not gameExit:

            for event in pygame.event.get():
                    if event.type == pygame.QUIT:
                            gameExit = True
                    elif event.type == pygame.KEYDOWN:
                            if event.key in (pygame.K_LEFT, pygame.K_a):
                               accel_x = -.2
                               img = pygame.image.load('PocketFlyer3.png')
                               img = pygame.transform.scale(img, (32, 32))
                            elif event.key in (pygame.K_RIGHT, pygame.K_d):
                               accel_x = .2
                               img = pygame.image.load('PocketFlyer2.png')
                               img = pygame.transform.scale(img, (32, 32))
                            if event.key in (pygame.K_UP, pygame.K_w):
                               accel_y = -.2
                            elif event.key in (pygame.K_DOWN, pygame.K_s):
                               accel_y = .2
                    elif event.type == pygame.KEYUP:
                            if event.key in (pygame.K_LEFT, pygame.K_RIGHT, pygame.K_a, pygame.K_d):
                                    accel_x = 0
                                    img = pygame.image.load('PocketFlyer1.png')
                                    img = pygame.transform.scale(img, (32, 32))
                            if event.key in (pygame.K_UP, pygame.K_DOWN, pygame.K_w, pygame.K_s):
                                    accel_y = 0

    #accel script for X
            x_change += accel_x
            if abs(x_change) >= max_speed_x:
                    x_change = x_change/abs(x_change) * max_speed_x

            if accel_x == 0:
                    x_change *= 0.92

            x += x_change

    #accel script for Y

            y_change += accel_y
            if abs(y_change) >= max_speed_y:
                    y_change = y_change/abs(y_change) * max_speed_y

            if accel_y == 0:
                    y_change *= 0.92

            y += y_change

            display.fill(skyblue)
            plane(x,y)

            if x > display_width - plane_width or x < 0 or y > display_width - plane_width or y < 0:
                    gameExit = True

            pygame.display.update()
            clock.tick(60)

你的小代码示例显示的实际上是一组向量。

答案 2 :(得分:0)

我不能称自己是一位经验丰富的c ++用户,但我希望我的回答能有所帮助。主要有3种创建一维数组的方法

  1. vector vectorName(或)vector vectorName(numberOfElements,StartingValue)
  2. type ArrayName [size]
  3. type * ArrayName
  4. 如果您使用第一种方式,您可以做很好的事情,例如&#34; vectorName.push_back(element)&#34;,所以它是动态 array.Basically你不需要决定你需要的元素的大小。

    如果使用第二种方式,则创建一个数组,但在使用之前必须决定数组的最大大小。

    如果你使用第三种方式,你正在创建一个指针,指向数组的第一个元素,你可以用 new 在堆上分配空间关键字,但您还需要决定它将占用多少空间。