在php中,当你想创建数组时,使用它:
$Data[] = "Val1";
$Data[] = "Val1";
$Data[] = "Val1";
php为此数组设置自动键0,1,2。我想知道我应该在地图类型或其他数组类型的c ++中做什么来将int键从0设置为无限制?
在c ++中是这样的:
map<int, string> Data;
Data[0] = "val1";
Data[1] = "val1";
Data[2] = "val1";
我必须自己设置密钥!
有没有办法创建结构或模板并将其与地图一起使用?
答案 0 :(得分:6)
IIUC,您想使用vector
:
#include <vector>
#include <string>
...
using namespace std;
...
vector<string> Data;
Data.push_back("val1");
Data.push_back("val1");
Data.push_back("val1");
// Now you can access the inserted elements via Data[i]
请参阅this page上使用此容器的完整示例。
答案 1 :(得分:1)
您可以使用变量:
map<int, string> Data;
int counter = 0;
Data[counter++] = "val1";
Data[counter++] = "val1";
Data[counter++] = "val1";
答案 2 :(得分:1)
如果您正在使用地图,那么您可以在循环中完成您所做的事情以自动生成整数键
<xsl:template match="@*|node()">
<xsl:choose>
<xsl:when test="some $i in $temp//@id satisfies $i = ./@id">
<xsl:apply-templates select="(following-sibling::*)[1]"/>
</xsl:when>
</xsl:choose>
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
答案 3 :(得分:1)
您可以制作一个辅助功能模板,如
template <typename T, typename V>
void add_to_map(map<int, T>& Data, const V& val) {
Data[Data.size()] = val;
}
然后
map<int, string> Data;
add_to_map(Data, "val1");
add_to_map(Data, "val1");
add_to_map(Data, "val1");