c++ - 数组和vector的用法
怪我咯
怪我咯 2017-04-17 13:05:16
0
2
633
怪我咯
怪我咯

走同样的路,发现不同的人生

全員に返信 (2)
阿神

你可以写:vec.begin() + i; 或者vec[i]
另外,用vector时,传递“引用”更好些。
void func(vector& vec);

いいねを押す+0
    左手右手慢动作

    STL使用iterator来抽象。你这样的情况,不管func是不是只读的,你都可以参考std::sort的写法。

    总的来说就是这样,把

    void func(int* array, int size);

    改成

    template void func(TIterator begin, TIterator end);

    举个简单的例子,二分查找法:

    template // 需要random iterator,如果使用了C++ concept的话可以有效美化错误信息 bool find(TIterator begin, TIterator end, std::remove_reference_t value) { auto size = end - begin; if (size <= 0) return false; auto position = begin + (size / 2); auto middle = *position; if (middle > value) return findx(begin, position, value); if (middle < value) return findx(position+1, end, value); return true; } vector x = {1, 2, 3, 4, 5}; find(x.begin(), x.end(), 2); // true find(x.begin() + 2, x.begin() + 3, 2); // false

    由此可见,iterator是发明来模拟指针这个概念的。不过指针的运算要求内容的存储是连续的,而iterator并不要求。所以为了思考方便,你只要把iterator想成指针就可以了。

    いいねを押す+0
      最新のダウンロード
      詳細>
      ウェブエフェクト
      公式サイト
      サイト素材
      フロントエンドテンプレート
      私たちについて 免責事項 Sitemap
      PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!