我是一個有競爭力的程序員,我一直在問自己是否有更短,更優雅的方式編寫for(int i=0; i<n; ++i)
。我只能使用標準C++,沒有其他庫。更快的方式來遍歷範圍
回答
在C++比賽中,有一組衆所周知的宏(不要在商業項目中使用它)。你還問了更好的解決方案(這是衆所周知的解決方案,但肯定不是更優雅)
例如閱讀本topcoder網站:
#define REP(x, n) for(int x = 0; x < (n); ++x)
然後在代碼中,你可以簡單地寫
REP(i,n){
}
一個基本完整的頭,我發現:
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
typedef vector<int> VI;
typedef long long LL;
#define FOR(x, b, e) for(int x = b; x <= (e); ++x)
#define FORD(x, b, e) for(int x = b; x >= (e); – –x)
#define REP(x, n) for(int x = 0; x < (n); ++x)
#define VAR(v, n) typeof(n) v = (n)
#define ALL(c) (c).begin(), (c).end()
#define SIZE(x) ((int)(x).size())
#define FOREACH(i, c) for(VAR(i, (c).begin()); i != (c).end(); ++i)
#define PB push_back
#define ST first
#define ND second
嗯,其中一些已經過時了,但這個想法太棒了! –
不運行時間測試,我假定這兩個:
for(int i=0; i<n; ++i)
和:
int i=0;
while (i<n)
{
i++
}
將在時機非常接近。也許在運行兩種類型的循環的程序中使用時間戳,並查看每種類型的整體時間/循環是什麼。
這些都是C/C++的基本循環結構,所以我不認爲會有一些會運行得更快(但我願意,如果我學到新的東西是錯誤的)
我能想到的唯一機制就是我的頭頂會更快,這是** goto _label _ **。但這是一個非常令人討厭的蠕蟲,必須像這樣處理。 –
有沒有什麼和我的python相同的例子? –
不是我所知道的。如果有的話,我確信有人會很快在線上發表意見。 –
看到你沒't請說明您是否需要使用i
[1]如何處理:[1]:
int i=n+1; while(--i);
它更短!
[1]未被證實是正確的。
如果你使用'i'但是向後是OK,那麼最好使用'for(int i = n; i - ;)'這樣至少使用正確的'i'值集合(只要' n'不是負數) – JSF
- 1. 遍歷範圍
- 2. 遍歷Excel範圍
- 3. PHP最快的方式來遍歷數組並更新mysql?
- 4. 角:深範圍遍歷和更新
- 5. 有沒有Angular中的任何方法來遍歷範圍樹?
- 6. 在列中遍歷範圍
- 7. Lua的遍歷日期範圍
- 8. 循環遍歷逐行的範圍
- 9. 不能遍歷範圍內的輸入
- 10. 如何遍歷指定的範圍
- 11. 遍歷NodeJS中的日期範圍
- 12. 從另一個範圍遍歷範圍內的對象?
- 13. 以C#方式遍歷集合中的所有元素的更快捷方式
- 14. vba遍歷範圍寫入csv
- 15. 遍歷範圍向前和向後 - Python
- 16. 循環遍歷範圍,行和列
- 17. 使用Angularjs循環遍歷範圍
- 18. 使用for循環遍歷excel範圍
- 19. 循環遍歷狀態 - 範圍? ruby/rails
- 20. 升壓範圍庫:依次遍歷兩個範圍
- 21. 更好的方式來實現這個香草JavaScript DOM遍歷?
- 22. 是否有更可讀(高效)的方式來遍歷ndarray?
- 23. 需要一種更好的方式來遍歷表單控件
- 24. 更優雅的方式來遍歷數組
- 25. 更清潔的方式來遍歷元組靈藥
- 26. 更快捷的方式來運行VBA搜索列表中的日期範圍
- 27. 如何以快速方式循環遍歷單元格範圍或其他替代方案代碼如下
- 28. 以定義順序遍歷範圍的最佳方式(從中間開始)
- 29. 將sumifs公式添加到較大範圍的更快方法
- 30. 快速遍歷行的方法
關於標題,我的意思是「faste r的寫作方式...' –
我一直在考慮類似於'爲我在範圍(0,n):'從Python。 –
目前還不清楚你打算如何使用'i'。如果你使用它來建立索引,讓我們說'const char s [] =「abc」;',你可以寫'for(auto c:s);' – ZDF