C++ 尝试使用唯一指针生成字符串向量的所有子序列

C++ 尝试使用唯一指针生成字符串向量的所有子序列,c++,c++11,C++,C++11,创建子序列的字符串: std::unique_ptr<std::vector<std::string>> allsubsequences(const std::string& sequence) { const int n = sequence.size(); <std::vector<std::string>> subsequences(new std::vector<std::string>); int num = pow(

创建子序列的字符串:

std::unique_ptr<std::vector<std::string>>
allsubsequences(const std::string& sequence)
{
const int n = sequence.size();
<std::vector<std::string>> subsequences(new std::vector<std::string>);
int num = pow(2, n);
for(int i = 0; i<= num-1; i++)
{
std::unique_ptr<std::string> some(new std::string);
for(int j = 0; j<= n-1; j++)
{
if(((i >> j) & 1) == 1)
{
some->push_back(sequence[j]);
}
}
subsequences->push_back(some);
}
return subsequences;
}
std::unique\u ptr
所有子序列(常量std::字符串和序列)
{
const int n=sequence.size();
子序列(新std::vector);
int num=功率(2,n);
对于(int i=0;i j)&1)==1)
{
some->push_back(顺序[j]);
}
}
子序列->推回(部分);
}
返回子序列;
}

编译器给出的代码错误如下:'`std::vector>::push_back(std::unique_ptr>&)

将值传递给
push_back
,而不是指针:

subsequences->push_back(*candidate);

您的错误是类型不匹配

您尝试将
std::unique\u ptr
插入
std::vector

您不需要所有已经为您处理内存的
std::unique\u ptr
std::vector
std::string

您只需执行以下操作:

std::vector<std::string> generate_all_subsequences(const std::string& sequence)
{
    const int n = sequence.size();

    std::vector<std::string> subsequences;
    int num = pow(2, n);

    for (int i = 0; i <= num - 1; i++) {
        std::string candidate;
        for (int j = 0; j <= n - 1; j++) {
            if (((i >> j) & 1) == 1) {
                candidate.push_back(sequence[j]);
            }
         }
         subsequences.push_back(std::move(candidate));
    }
    return subsequences;
}
std::vector生成所有子序列(const std::string&sequence)
{
const int n=sequence.size();
std::向量子序列;
int num=功率(2,n);
对于(int i=0;i j)&1)==1){
候选者。推回(序列[j]);
}
}
子序列。推回(std::move(候选者));
}
返回子序列;
}

C++不是Java,您不需要
new
来构造对象。
(i>>j)&1)==1的任何特殊原因?