我们说我有以下变量:
int number1 = 2;
int number2 = 4;
...
int numbern = 43;
现在我想要的是在for循环数字' i'中访问这些元素,如下所示:
for (int i = 0; i < n; i++)
{
if(number1 == someFunc("number" + to_string(i)))
{
// do stuff
}
}
这里&#39; someFunc&#39;应确保它识别出我想使用字符串对应的数字。我怎么能这样做?
答案 0 :(得分:2)
使用std :: map你可以这样做:
#include <iostream>
#include <stdlib.h>
#include <map>
#include <string>
using namespace std;
int main (void)
{
map<string,int> mymap;
mymap["number1"] = 2;
mymap["number2"] = 4;
/* ... */
char number[2];
number[1] = '\0';
for(int ii=1; ii<=2; ii++)
{
number[0] = (char)(ii+48);
cout << string("number")+string(number) << ": ";
mymap[string("number")+string(number)] += 1;
cout << mymap[string("number")+string(number)] << endl;
}
return 0;
}
这是字符串,您可以通过该字符串访问实际数字。在这个例子中,我没有确保密钥实际存在,无论如何应该正常完成。
答案 1 :(得分:1)
我可以想到以下两个选项:
使用数组。
int numbers[] = {/* Put the initialization data*/};
....
if(number1 == someFunc(numbers[i]))
使用地图。如果要更改数组的大小或者预期键不遵循通常的数组索引值,则此选项很有用。
std::map<int, int> numbers;
// Add code to initialize the map.
....
if(number1 == someFunc(numbers[i]))
答案 2 :(得分:1)
如果数字不大,那么你可以写
int i = 0;
for ( int x : { number1, number2, /* other numbers */ numbern } )
{
if ( x == someFunc( "number" + to_string( i ) ) )
{
// do stuff
}
++i;
}
否则你应该将数字放在某个容器中。