C++ 配对'的数据类型是什么;向量中的s元素?
我需要临时声明向量对中的第一个元素C++ 配对'的数据类型是什么;向量中的s元素?,c++,arrays,vector,char,std-pair,C++,Arrays,Vector,Char,Std Pair,我需要临时声明向量对中的第一个元素 vector<pair<char*, int> > rezVector; //is vector I'm using auto tempPair = rezVector[0].first; //Is solution I got, but my teacher won't accept (I must know data type) 编辑 对于那些想知道我如何使用它的人: sort(rezVector.begin(), rezVe
vector<pair<char*, int> > rezVector; //is vector I'm using
auto tempPair = rezVector[0].first; //Is solution I got, but my teacher won't accept (I must know data type)
编辑
对于那些想知道我如何使用它的人:
sort(rezVector.begin(), rezVector.end(), compareFn);
char*& tempPair = rezVector[0].first; //Already with solution
for(int i=0; i<m; i++){
for(int j=i+1; j<m-1; j++){
if(rezVector[i].second == rezVector[j].second){
if(strcmp(rezVector[i].first, rezVector[j].first)>0){
tempPair = rezVector[i].first;
rezVector[i].first = rezVector[j].first;
rezVector[j].first = tempPair;
}
}
}
}
sort(rezVector.begin()、rezVector.end()、compareFn);
char*&tempPair=rezVector[0]。第一//已经有解决方案了吗
因为(inti=0;i你的老师可能会期待各种各样的事情,包括
char * temp = rezVector[0].first;
char *& temp = rezVector[0].first;
const char * temp = rezVector[0].first;
std::string temp = rezVector[0].first;
std::string_view temp = rezVector[0].first;
您必须询问他们temp
的预期用途,以了解他们正在寻找的答案(如果有的话)。访问配对的。首先
实际上为您提供了对相应条目的引用,以便rezVector[0].first
将具有类型char*&
。这允许您更改rezVector[0]的内容。如果您确实想这样做,请首先执行操作。但您也可以将rezVector[0]的结果分配给类型为char*
的对象,以便获得引用值的副本
所以我认为选择正确的类型取决于你想对结果做什么。你想在适当的位置更改对的内容,还是只想复制信息
请参见以下示例中的差异:
int main() {
char val1[] = "Hello";
char val2[] = "World";
char val3[] = "out there";
vector<pair<char*, int> > rezVector; //is vector I'm using
rezVector.push_back({val1,10});
cout << "initial: " << rezVector[0].first << std::endl;
char*& tempPairFirstReadWrite = rezVector[0].first;
tempPairFirstReadWrite = val2;
cout << "changed: " << rezVector[0].first << std::endl;
char* tempPairFirstReadOnly = rezVector[0].first;
tempPairFirstReadOnly = val3;
cout << "not changed again: " << rezVector[0].first << std::endl;
}
你能展示一下你是如何使用它们的,以及它们是如何不起作用的吗?char*tempPair
应该是正确的。从技术上讲,你得到了一个char*&
…你的意思是vector::value\u type::first\u type
?@Slava我喜欢它。它很有趣,但它是“数据类型”:)我会告诉老师类型是decltype(rezVector[0].首先)
,但对我来说,取笑老师总是比让他们开心更重要。你是对的,char*&temp=rezVector[0]
是我要找的`我必须排序,所以我必须更改值,而不是复制。因此,正如我所看到的,我正在寻找相关条目的参考
int main() {
char val1[] = "Hello";
char val2[] = "World";
char val3[] = "out there";
vector<pair<char*, int> > rezVector; //is vector I'm using
rezVector.push_back({val1,10});
cout << "initial: " << rezVector[0].first << std::endl;
char*& tempPairFirstReadWrite = rezVector[0].first;
tempPairFirstReadWrite = val2;
cout << "changed: " << rezVector[0].first << std::endl;
char* tempPairFirstReadOnly = rezVector[0].first;
tempPairFirstReadOnly = val3;
cout << "not changed again: " << rezVector[0].first << std::endl;
}
initial: Hello
changed: World
not changed again: World