Si j'ai bien compris std::move et les rvalue références introduites dans c++11, le but est d'éviter des copies quand on peut récupérer directement les données d'un objet temporaire.
Je me demande quand est il judicieux de l'utiliser? Par example sachant que std::vector a un move constructor, doit-on/ peut-on retourner une variable locale au lieu d'un pointeur?

Voci mon example. Est ce que ceci est acceptable:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
bool compPairsByValue(const std::pair<ushort,ushort>& lhs, const std::pair<ushort,ushort>& rhs) {
    return lhs.second < rhs.second;
}
std::map<int,int> myMap;
...
std::vector<pair<int,int> > getOrderedMapVector(){
	 std::vector<pair<int,int> > vect(myMap.cbegin(), myMap.cend());
	 std::sort(vect.begin(), vect.end(), compPairsByValue);
	 return vect;
}
 
{
	 std::vector<pair<int,int> > vect = getOrderedMapVector();
	 // ... utilisation du vecteur
 
}
ou bien vaut il mieux toujours continuer avec l'utilisation de pointeurs?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
std::vector<pair<int,int> > * getOrderedMapVectorP(){
	std::vector<pair<int,int> > *vect = new std::vector<pair<int,int> >(myMap.cbegin(), myMap.cend());
	std::sort(vect->begin(), vect->end(), compPairsByValue);
	return vect;
}
 
{
	std::vector<pair<int,int> > *vect = getOrderedMapVectorP();
	// ... utilisation du vecteur
	delete vect;
}