C++ 是否创建变量的别名?
我在创建变量别名时遇到了一个难题,需要您的帮助 目的 我的函数采用两个向量,但我希望确保向量变量“a”将引用较长的向量。同时,我不想复制向量。因此,我使用引用来创建别名,但我遇到了一个难题 情景1 因为变量在if子句中,所以无法看到该变量,但我需要if子句来知道哪个更长C++ 是否创建变量的别名?,c++,alias,C++,Alias,我在创建变量别名时遇到了一个难题,需要您的帮助 目的 我的函数采用两个向量,但我希望确保向量变量“a”将引用较长的向量。同时,我不想复制向量。因此,我使用引用来创建别名,但我遇到了一个难题 情景1 因为变量在if子句中,所以无法看到该变量,但我需要if子句来知道哪个更长 vector<float> conv(const vector<float> &operand1, const vector<float> &operand2){ if (
vector<float> conv(const vector<float> &operand1, const vector<float> &operand2){
if (operand1.size() < operand2.size()){
const vector<float> &a = operand2;
const vector<float> &b = operand1;
}
else{
const vector<float> &a = operand1;
const vector<float> &b = operand2;
}
vector conv(常量向量和操作数1、常量向量和操作数2){
if(操作数1.size()<操作数2.size()){
常量向量&a=操作数2;
常量向量&b=操作数1;
}
否则{
常量向量&a=操作数1;
常量向量&b=操作数2;
}
情景2
在if子句外部声明引用。不幸的是,在声明时必须初始化引用。但是,我需要if子句来知道将其声明为哪个操作数
vector<float> conv(const vector<float> &operand1, const vector<float> &operand2){
const vector<float> &a;
const vector<float> &b;
if (operand1.size() < operand2.size()){
&a = operand2;
&b = operand1;
}
else{
&a = operand1;
&b = operand2;
}
vector conv(常量向量和操作数1、常量向量和操作数2){
常数向量&a;
恒向量&b;
if(操作数1.size()<操作数2.size()){
&a=操作数2;
&b=操作数1;
}
否则{
&a=操作数1;
&b=操作数2;
}
有没有办法解决这个问题?非常感谢。这是你想要的吗:
vector<float> conv(const vector<float>& op1, const vector<float>& op2) {
const vector<float> &a = op1.size() < op2.size() ? op2 : op1; // the longer one
const vector<float> &b = op1.size() < op2.size() ? op1 : op2; // the other
...
}
向量conv(常量向量和op1,常量向量和op2){
常量向量&a=op1.size()vector<float> conv(const vector<float> &operand1, const vector<float> &operand2)
{
const vector<float> *a;
const vector<float> *b;
if (operand1.size() < operand2.size())
{
a = &operand2;
b = &operand1;
}
else
{
a = &operand1;
b = &operand2;
}
// use *a and *b as needed ...
}
vector conv(常量向量和操作数1、常量向量和操作数2)
{
常数向量*a;
常数向量*b;
if(操作数1.size()<操作数2.size())
{
a=&2;
b=&1;
}
其他的
{
a=&1;
b=&2;
}
//根据需要使用*a和*b。。。
}
我会保存的结果是的,你是对的。我只是不想在这里使用其他变量,因为任何现代编译器都会进行优化。非常感谢。这正是我需要的。:)