我有一个string类型的变量数组.就像是:
std::string Array1[3] = {"A","B","C"};
Run Code Online (Sandbox Code Playgroud)
我想将这个数组的内容复制到另一个数组中:
std::string Array2[3];
Run Code Online (Sandbox Code Playgroud)
目前我使用循环来做到这一点.有没有更简单/替代的方式?如果我按如下方式声明和初始化变量:
if( ... check some condition ... )
{
.
.
std::string Array1[3] = {"A","B","C"};
}
Run Code Online (Sandbox Code Playgroud)
一旦离开if语句的范围,它显然会被销毁.有没有办法避免这种情况,以便以后可以在函数中使用它.理想情况下,我想避免声明变量Array1 global.
谢谢
不,对于一系列复杂对象,您需要一个循环,或者您可以使用以下内容包装循环std::copy
:
std::string Array1[3] = { "A", "B", "C" };
std::string Array2[3];
std::copy(Array1, Array1 + 3, Array2);
Run Code Online (Sandbox Code Playgroud)
但是,我建议使用更具规范性std::vector
,具有原生分配(请参阅此 SO答案以了解填充方法std::vector
):
std::vector<std::string> Array1, Array2;
Array1.push_back("A"); Array1.push_back("B"); Array1.push_back("C");
Array2 = Array1;
Run Code Online (Sandbox Code Playgroud)
或者,至少,boost::array
(std::array
如果您使用的是C++ 0x,std::tr1:array
或类似于最近的MSVS等具有TR1功能的工具链),这是一个静态分配的等价物,也可以分配:
using boost::array; // swap as appropriate
array<std::string, 3> Array1 = {{ "A", "B", "C" }}; // yes, I used two
array<std::string, 3> Array2 = Array1;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8028 次 |
最近记录: |