代码之家  ›  专栏  ›  技术社区  ›  Baruch

迭代器和指针?

  •  0
  • Baruch  · 技术社区  · 14 年前

    我知道C语言中没有指针,但是我正在尝试去做下面的事情,我用C++中的指针(或者更好的迭代器)来完成(我在C语言中学习了一门教程,但是我已经知道C++)了。

    我们接到一个任务,要写一个简单的“商店”程序(库存、交易等)。我的第一个想法(来自C++)是这样的:有一个链表项和它们的数量在股票。然后,有一个表示sale的类,该类具有当前sale中的项列表,其中每个项都表示为主库存列表中特定项的迭代器和金额值。(我希望这是清楚的。)

    我试图在C中也这样做,但不知道如何将这些迭代器放到主列表中(它们最好在主列表的更新过程中也很好)。 你怎么做到的?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Zareth    14 年前

    使用引用不需要做任何特殊的操作,它们在C#中默认使用。

    class Sale {
      public:
        void AddItem(Item* i) {
            items.push_back(i);
        }
    
      private:
        std::vector<Item*> items;
    };
    

    在C#中,由于默认情况下它使用引用而不是按值传递,因此默认情况下会得到该行为。从下面的代码中可以得到类似的C#行为:

    class Sale {
      private List<Item> items;
    
      public void AddItem(Item i) {
        items.Add(i);
      }
    }
    

    把这个C代码叫做

    Item item = new Item("A test item");
    Sale sale = new Sale();
    sale.AddItem(item);
    
        2
  •  0
  •   Puppy    14 年前