std :: vektörüne C dizisi olarak erişmek istediğinizde, bu örnekte görebileceğiniz gibi en az dört farklı yoldan birini seçebilirsiniz:std :: vector: vec.data() veya & vec [0]
#include <iostream>
#include <vector>
using namespace std;
int main() {
std::vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(42);
vec.push_back(24024);
{
int* arr = vec.data();
cout << arr << endl; /* output: 0x9bca028 */
cout << arr[3] << endl; /* output : 24024 */
}
{
int* arr = &vec.front();
cout << arr << endl; /* output: 0x9bca028 */
cout << arr[3] << endl; /* output : 24024 */
}
{
int* arr = &vec[0];
cout << arr << endl; /* output: 0x9bca028 */
cout << arr[3] << endl; /* output : 24024 */
}
{
int* arr = &vec.at(0);
cout << arr << endl; /* output: 0x9bca028 */
cout << arr[3] << endl; /* output : 24024 */
}
}
Çoğu durumda bulduğum, &vec[0]
'dur. Sanırım en az zarif, bu yüzden ... neden en çok kullanılan? daha verimli veya daha uyumlu var mı? data()
hakkında çok fazla belge bulamıyorum.
operatöründe bulunan kullanıcıyı gizlemek için kullanılabilecek bir CAdapt şablon sınıfına sahiptir. (*) *, C++ 11 olduğu anlamında uyumsuz olarak kabul edilebilir. Büyük dokümantasyon kaynakları yeni özellikler ile yetişiyor gibi, kıt belgeleme), zaman kesinlikle bu uyumsuzluğun ortadan kalkmasını sağlayacaktır ve sonra gitmek için kesin bir yoldur. –